Bazen runtime esnasında bir kodu derleyip çıktısını elde etmek isteyebiliriz, en azından benim başıma geldi. Bir projemde bana string olarak gelen bir değeri, örneğin “DateTime.Now()”, runtime esnasında derleyip çıktısını elde etmem gerekti.
Nasıl yapabileceğimize dair örneğe aşağıda bakabilir, ihtiyacınıza göre düzenleyebilirsiniz.
Selametle…
// Compile edeceğimiz örnek kodumuz. string code = @" using System; namespace CompileCore { public class CompileHelper { public static string CompileDateTime() { return DateTime.Now.ToString(""dd.MM.yyyy HH:mm:ss""); } } } "; CSharpCodeProvider provider = new CSharpCodeProvider(); // System.CodeDom.Compiler namespace'inin altında bulunmaktadır. CompilerResults results = provider.CompileAssemblyFromSource(new CompilerParameters(), code); Type binaryFunction = results.CompiledAssembly.GetType("CompileCore.CompileHelper"); // Gerisi bir ufak reflection kodu ile ilglil metotu alıp delegate aracılığı ile çağırıyoruz. var mInfo = binaryFunction.GetMethod("CompileDateTime"); var funcDelegate = (Func<string>)Delegate.CreateDelegate(typeof(Func<string>), mInfo); return funcDelegate();
Hocam selamlar, net 7 için güncelleme vakti gelmiş kodu bence
Oh sanırım evet, üzerinden koca bir 7 yıl geçmiş. Teknoloji durmuyor yerinde maalesef