2011-07-28 2 views
0

DLL 파일이 있으면로드하고 새 인스턴스를 만들고 캐스트 한 다음 다른 함수로 전달하려고합니다. 내가 현재 할 수는 예를 들어, DLL에 대한 참조를 추가하고, 인스턴스를 생성하는 것입니다 무엇C#에서 DLL을로드하고 새 인스턴스를 만드는 방법은 무엇입니까?

ConfigFileSystemRegistry.Instance.RegisterFileSystem("er://", new Efs()); 

는 동적으로로드하려고하지만, 사용되는 System.TypeInitializationException

내 코드를주고 is :

 if (File.Exists("plugin\\Efsystem.dll")) 
     { 
      Assembly assembly = Assembly.LoadFrom("plugin\\Efsystem.dll"); 
      Type type = assembly.GetType("Efs"); 
      ConfigFileSystemRegistry.Instance.RegisterFileSystem("er://", (IFileSystem) Activator.CreateInstance(type)); 
     } 
+0

DLL의 인스턴스 란 무엇입니까? – Oded

+0

죄송합니다. DLL의 특정 클래스 인스턴스를 의미합니다. – segfault

+0

'System.TypeInitializationException'의 예외 메시지는 무엇입니까? – Peter

답변

0

기본 생성자가 있는지 확인하는 것이 좋습니다. 없는 경우, 필요한 인수를 확인하고 params object[] args 인수와 함께 CreateInstance 재정의를 호출하십시오.

1

System.TypeInitializationException은 정적 생성자가 예외를 던지고 있음을 의미합니다. 내부 예외 및 스택 추적에서 힌트를 확인하십시오.

관련 문제