WPF C# 애플리케이션의 동적 코드 실행
이 문서에서는 WPF C# 애플리케이션 내의 외부 텍스트 파일에서 코드를 실행하는 문제를 다룹니다. 실행할 코드가 포함된 텍스트 파일은 애플리케이션의 실행 디렉터리에 있습니다.
구현
이 솔루션은 코드 컴파일과 리플렉션 기술의 조합을 활용합니다. 이 프로세스에는 텍스트 파일에서 코드를 실시간으로 컴파일한 후 컴파일된 어셈블리에서 대상 메서드를 인스턴스화하고 호출하는 과정이 포함됩니다.
다음 코드 조각은 이 접근 방식을 보여줍니다.
<code class="language-csharp">// ... code ... Dictionary<string, string> providerOptions = new Dictionary<string, string> { {"CompilerVersion", "v3.5"} }; CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions); CompilerParameters compilerParams = new CompilerParameters { GenerateInMemory = true, GenerateExecutable = false }; CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, sourceCode); if (results.Errors.Count > 0) throw new Exception("Compilation failed!"); object instance = results.CompiledAssembly.CreateInstance("Foo.Bar"); // Assuming the class is named "Bar" in the "Foo" namespace MethodInfo method = instance.GetType().GetMethod("SayHello"); // Assuming the method is named "SayHello" method.Invoke(instance, null);</code>
자세한 설명
코드는 먼저 텍스트 파일의 C# 코드를 문자열 변수(sourceCode
)로 읽어옵니다. CSharpCodeProvider
은 지정된 컴파일러 옵션으로 초기화됩니다. CompilerParameters
은 실행 파일을 생성하지 않고 메모리에 컴파일된 어셈블리를 생성하도록 설정됩니다. 그런 다음 CompileAssemblyFromSource
메서드가 컴파일을 수행합니다.
오류 검사는 컴파일 과정을 따릅니다. 컴파일이 성공하면 CreateInstance
을 사용하여 컴파일된 클래스의 인스턴스가 생성되고 GetMethod
및 Invoke
을 사용하여 지정된 메서드가 호출됩니다. 이를 통해 외부에서 로드된 코드를 동적으로 실행할 수 있습니다. 네임스페이스 및 클래스/메서드 이름은 텍스트 파일의 코드와 일치해야 합니다. 프로덕션 환경의 견고성을 위해 오류 처리(예: try-catch 블록)를 추가해야 합니다.
위 내용은 WPF C# 응용 프로그램의 텍스트 파일에서 코드를 어떻게 실행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!