-
妳說的這種情況是動態編譯-執行,但是這種方法要達到妳的目的要走的彎路太多了。
難以實現
//下面是壹個例子:
使用系統;
使用系統。反思;
使用系統。全球化;
使用微軟。CSharp
使用系統。CodeDom
使用系統。CodeDom .編譯器;
使用系統。文本;
命名空間ConsoleApplication1
{
公開課程
{
靜態void Main(string[] args)
{
// 1.CSharpCodePrivoder
CSharpCodeProvider objcsharpcodeprovoder = new CSharpCodeProvider();
// 2.ICodeComplier
ico decompiler objICodeCompiler = objcsharpcodeprovoder。create compiler();
// 3.編譯器參數
compiler parameters objCompilerParameters = new compiler parameters();
objCompilerParameters。reference assemblies . Add(" system . dll ");
objCompilerParametersGenerateExecutable = false
objCompilerParametersGenerateInMemory = true
// 4.編譯器結果
編譯器結果cr = objICodeCompiler。CompileAssemblyFromSource(objCompilerParameters,generate code());
如果(cr。Errors.HasErrors)
{
控制臺。WriteLine("編譯錯誤:");
foreach(編譯器錯誤cr中的錯誤。錯誤)
{
控制臺。WriteLine(錯誤。ErrorText);
}
}
其他
{
//通過反射調用HelloWorld的實例。
Assembly = cr。已編譯的程序集;
object objHelloWorld = objAssembly。create instance(" dynamic college。hello world”);
MethodInfo objMI = objHelloWorld。GetType()。get method(" OutPut ");
控制臺。WriteLine(objMI。Invoke(objHelloWorld,null));
}
控制臺。ReadLine();
}
靜態字符串生成代碼()
{
StringBuilder sb = new StringBuilder();
某人(somebody的簡寫)Append("使用系統;");
某人(somebody的簡寫)追加(環境。換行符);
某人(somebody的簡寫)Append("命名空間動態退化");
某人(somebody的簡寫)追加(環境。換行符);
某人(somebody的簡寫)追加(" { ");
某人(somebody的簡寫)追加(環境。換行符);
某人(somebody的簡寫)append(" public class hello world ");
某人(somebody的簡寫)追加(環境。換行符);
某人(somebody的簡寫)追加(" { ");
某人(somebody的簡寫)追加(環境。換行符);
某人(somebody的簡寫)append(" public string OutPut()");
某人(somebody的簡寫)追加(環境。換行符);
某人(somebody的簡寫)追加(" { ");
某人(somebody的簡寫)追加(環境。換行符);
某人(somebody的簡寫)append(" return " Hello world!\";");
某人(somebody的簡寫)追加(環境。換行符);
某人(somebody的簡寫)追加(" } ");
某人(somebody的簡寫)追加(環境。換行符);
某人(somebody的簡寫)追加(" } ");
某人(somebody的簡寫)追加(環境。換行符);
某人(somebody的簡寫)追加(" } ");
字符串代碼= sb。ToString();
控制臺。WriteLine(代碼);
控制臺。WriteLine();
返回代碼;
}
}
}