> 백엔드 개발 > C++ > DLL과 유형 이름만 알고 런타임에 클래스를 인스턴스화할 수 있습니까?

DLL과 유형 이름만 알고 런타임에 클래스를 인스턴스화할 수 있습니까?

Linda Hamilton
풀어 주다: 2025-01-19 09:21:09
원래의
491명이 탐색했습니다.

Can I Instantiate a Class at Runtime Knowing Only its DLL and Type Name?

런타임 시 어셈블리 및 인스턴스화된 클래스의 동적 로드

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿