런타임 시 어셈블리 및 인스턴스화된 클래스의 동적 로드
DLL 파일 이름과 클래스 이름만 알면 프로젝트에서 어셈블리를 명시적으로 참조하지 않고 런타임에 개체를 인스턴스화할 수 있습니까? 이 클래스는 일반적으로 인스턴스화 후 유형 변환을 허용하는 인터페이스를 구현합니다.
어셈블리 이름: library.dll 유형 이름: 회사.프로젝트.클래스 이름
파일 경로 없음
절대 DLL 경로가 없으므로 사용할 수 없습니다. DLL은 응용 프로그램 루트, system32 또는 GAC에 있을 수 있습니다. Assembly.LoadFile
솔루션
가능합니다. 어셈블리를 메모리에 로드하려면을 사용하세요. 그런 다음 Assembly.LoadFrom
을 사용하여 원하는 유형의 인스턴스를 생성하세요. 먼저 리플렉션을 사용하여 유형을 찾습니다. Activator.CreateInstance
<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("MyNice.dll"); Type type = assembly.GetType("MyType"); object instanceOfMyType = Activator.CreateInstance(type);</code>
개선된 솔루션
어셈블리 파일 이름과 유형 이름이 주어지면을 유형으로 해석할 수 있습니다. 오류 처리를 위해 try/catch 블록으로 래핑할 수 있습니다. 실패하면 다른 어셈블리가 존재할 수 있는 디렉터리를 검색하고 필요한 경우 이전 방법을 적용합니다. Activator.CreateInstance(assemblyName, typeName)
위 내용은 DLL과 유형 이름만 알고 런타임에 클래스를 인스턴스화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!