C#에서 개발자는 특히 타사 라이브러리나 런타임 구성을 사용할 때 동적 링크 라이브러리(DLL)를 동적으로 로드해야 하는 경우가 많습니다. 이 문서에서는 Assembly.LoadFile() 메서드 사용 시 제한 사항에 대해 자주 묻는 질문을 해결하고 리플렉션 및 동적 개체 기반 솔루션을 제공하는 것을 목표로 합니다.
질문에서 언급했듯이 Assembly.LoadFile()을 사용하면 DLL이 성공적으로 로드되고 클래스 이름과 같은 정보를 검색할 수 있습니다. 그러나 로드된 DLL에서 메서드를 직접 호출하는 것이 불가능할 수도 있습니다.
이러한 한계를 극복하기 위해 개발자는 런타임에 메서드와 작업 개체를 동적으로 호출할 수 있는 리플렉션을 사용할 수 있습니다. 이렇게 하려면:
클래스의 Type 개체 가져오기: var type = DLL.GetExportedTypes().FirstOrDefault();
클래스 인스턴스 만들기: var c = Activator.CreateInstance(type);
InvokeMember() 메서드를 사용하여 대상 메서드를 호출합니다.
<code class="language-csharp"> type.InvokeMember("Output", BindingFlags.InvokeMethod, null, c, new object[] { "Hello" });</code>
.NET 4.0 이상을 대상으로 하는 애플리케이션의 경우 동적 키워드를 사용하면 이 프로세스를 더욱 단순화할 수 있습니다. 이 접근 방식을 사용하면 유형 반영 없이 멤버에 직접 액세스할 수 있습니다.
<code class="language-csharp">dynamic c = Activator.CreateInstance(type); c.Output("Hello");</code>
요약하자면 Assembly.LoadFile()을 사용하면 DLL 로드가 허용되지만 로드된 모듈에서 메서드를 호출하려면 리플렉션 또는 동적 개체가 필요합니다. 애플리케이션의 요구 사항에 따라 두 방법 모두 C#에서 런타임 시 DLL을 동적으로 로드하고 사용하기 위한 실행 가능한 솔루션을 제공합니다.
위 내용은 Assembly.LoadFile() 이외의 C#에서 DLL의 메서드를 어떻게 동적으로 로드하고 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!