어셈블리에서 해당 이름을 모른 채 클래스를로드하려고합니다 (Class1 : Interface라고 말합니다). 내 코드는 다음과 같습니다의 I 온라인으로 발견 기사와 MSDN을 바탕으로C#에서 클래스를 동적으로로드하십시오
이Assembly a = Assembly.LoadFrom("MyDll.dll");
Type t = (Type)a.GetTypes()[0];
(Interface) classInstance = (Interface) (ClasActivator.CreateInstance(t);
, GetTypes()[0]
이 클래스 1을 반환한다고 가정한다 (MyDll.dll에서 하나의 클래스가있다). 그러나 내 코드는 Class1.Properties.Settings
을 반환합니다. 그래서 3 행은 예외를 만듭니다.
Unable to cast object of type 'Class1.Properties.Settings' to type Namespace.Interface'.
저는이 문제를 해결하는 이유와 방법을 정말로 모릅니다.
이Type t = a.GetTypes()
.FirstOrDefault(type => type.GetInterface(typeof(Interface).FullName) != null);
수행하려는 작업에 따라 원래 인터페이스에 속성으로 태그를 지정한 다음 해당 속성이있는 모든 유형을 확인할 수 있습니다. – Blam