어셈블리를 컴파일하는 데 CSharpCodeProvider
를 사용하고 물리적 파일을 생성하고 싶지 않기 때문에 true
로 설정 한 CompileParameters
GenerateInMemory
속성이 있습니다.InMemory 컴파일 된 어셈블리를 현재 도메인에로드
컴파일 후 CompilerResults
걸릴 수 있으며 다음과 같은 작업을 수행 할 수 있습니다. -
object x = cr.CompiledAssembly.CreateInstance("MyGeneratedClass");
Console.WriteLine(x);
예상되는 출력을 얻었으므로 CreateInstance
이 작동했습니다.
그러나 어셈블리에 대한 지식이 없으면 현재 AppDomain
형식을 액세스 할 수 있어야합니다. 내가 이런 식으로 뭔가를 할 필요가 : -
Type t = Type.GetType("MyGeneratedClass");
object x = Activator.CreateInstance(t);
문제는이 코드에서 t
null이되는 끝납니다. 이제 어셈블리가 컴파일되었지만로드되지 않았을 것으로 판단됩니다. 이 어셈블리를 도메인에로드하여 형식 이름을 확인할 수있는 것을 찾을 수 없습니다.
누구든지 나를 계몽시킬 수 있습니까?
올바른 솔루션으로 안내하기 때문에 이것을 답으로 선택하십시오. GetType의 이름은 CompileParameters에서 정의 할 수있는 어셈블리 이름으로 quailifed되어야합니다. – AnthonyWJones
@AnthonyWJones : 멋지다! 다행스럽게도 도움이 될 수 있습니다. :-) –