문제

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();

그런 다음 유형의 반사를 사용하여 원하는 유형의 인스턴스를 작성하고 원하는 메소드를 실행할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top