문제
리플렉션을 사용하여 사용자 DLL을 조사하고 그 안에 클래스 개체를 만들어야 합니다.
그것을 수행하는 간단한 방법은 무엇입니까?
해결책
노력하다 활성화기.CreateInstance.
다른 팁
System.Reflection.Assembly
당신이 사용하고 싶은 수업입니다.여기에는 사용자 DLL에 포함된 유형을 반복하는 다양한 방법이 포함되어 있습니다.각 클래스를 반복하여 특정 인터페이스 등에서 상속하는지 확인할 수 있습니다.
http://msdn.microsoft.com/en-us/library/system.reflection.assemblies_members.aspx
조사하다 Assembly.GetTypes()
유형 목록을 가져오는 방법 또는 Assembly.GetExportedTypes()
공공의 사람들에게만.
Activator.CreateInstance를 사용하여 Type 개체에서 클래스의 인스턴스를 생성하고 Assembly.GetTypes를 사용할 수 있는 dll의 모든 유형을 가져올 수 있습니다.
다음 링크를 살펴보세요.
http://www.java2s.com/Code/CSharp/Development-Class/Createanobjectusingreflection.htm
http://msdn.microsoft.com/en-us/library/k3a58006.aspx
기본적으로 리플렉션을 사용하여 어셈블리를 로드한 다음 관심 있는 형식을 찾습니다.유형이 있으면 해당 유형의 생성자 또는 기타 메소드/속성을 찾도록 요청할 수 있습니다.생성자가 있으면 이를 호출할 수 있습니다.쉬운!
이미 말했듯이 System.Reflection 네임스페이스를 찌를 필요가 있습니다.
로드하려는 DLL의 위치/이름을 미리 알고 있는 경우 Assembly.GetTypes()를 반복해야 합니다.
의사코드에서는 다음과 같이 보일 것입니다:
객체를 생성하고 조립합니다.
어셈블리에 포함된 모든 유형을 반복합니다.
찾고 있는 항목을 찾으면 이를 호출합니다(CreateInstance)…
현명하게 사용하십시오.
;)
둘러보고 싶다면 Reflection 코드가 많이 있지만 작업은 정말 간단하고 샘플이 포함된 기사가 최소한 12개 이상 있습니다.(일명 구글).그럼에도 불구하고 MSDN은 Reflection Reference에 대한 친구입니다.