Bazen runtime esnasında bir kodu derleyip çıktısını elde etmek isteyebiliriz, en azından benim başıma geldi. 🙂 Bir projemde bana “DateTime.Now()” şeklinde string olarak gelen bir değeri vb. runtime esnasında derleyip çıktısını elde etmem gerekti.
Örneği aşağıda bakabilir, ihtiyacınıza göre sizde bu tarz bir konu ile karşılaşırsanız geliştirebilirsiniz. 🙂
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();
Be First to Comment