생성 된 방법을 컴파일하고 호출하십시오
-
03-07-2019 - |
문제
Codedom을 사용하여 수업을 만들고 해당 클래스에 단일 메소드를 추가했습니다. 이제 CodeCompileUnit 인스턴스를 구성하고 코드를 컴파일하고 생성 된 메소드를 호출하는 방법이 있습니까? 메소드 호출은 코드 생성과 동일한 컨텍스트에서 수행해야합니다.
해결책
a 내 블로그의 친구:
CSharpCodeProvider codeProvider = new CSharpCodeProvider();
codeProvider.GenerateCodeFromNamespace(codeNamespace, new StringWriter(), new CodeGeneratorOptions());
CompilerParameters param = new CompilerParameters(assemblyReferences);
param.GenerateExecutable = false;
param.GenerateInMemory = true;
param.TreatWarningsAsErrors = false;
param.WarningLevel = 4;
CompilerResults results = codeProvider.CompileAssemblyFromDom(param, compileUnit);
Assembly assembly = results.CompiledAssembly;
Type[] types = assembly.GetExportedTypes();
그런 다음 유형의 반사를 사용하여 원하는 유형의 인스턴스를 작성하고 원하는 메소드를 실행할 수 있습니다.
제휴하지 않습니다 StackOverflow