dll에서 함수를로드하려고합니다. DLL은로드 있었으나 결국 함수를 호출의 장소에서, 나는 모호한 일치가 여기에 dll에 액세스 할 때 모호한 일치가 발견되었습니다.
는 코드입니다 발견예외를 얻고있다.
Assembly dll = Assembly.LoadFrom(DLLPATH); if (dll != null) { Type Tp = dll.GetType("ABCD.FooClass"); if (Tp != null) { Object obj = Activator.CreateInstance(Tp); if (obj != null) { List = (List<String>)obj.GetType().GetMethod("Foo").Invoke(obj, null); } else { Console.WriteLine("obj is null"); } } Console.WriteLine("Type is null"); } else Console.WriteLine("Dll is not loaded"); Console.ReadKey();
내가 부르고 방법 (즉
Foo
), 는 매개 변수를 허용하지 않습니다 그것은 오버로드 방법이다. 그게 제가 잘못 가고있는 곳입니까 아니면 다른 곳입니까?매개 변수를 허용하지 않는 메소드를 호출하는 또 다른 방법이 있습니까? 게시 된 솔루션을 시도했지만 here 작동하지 않습니다.
LoadLibrary/CreateInstance가없는 샘플 코드는 좀 더 명확하게 문제를 표시합니다. 단순화 된 "FooClass"로 간단한 샘플을 만들고 Invoke를 호출하십시오. (예외가 있다고 가정). –
어셈블리를 여러 번로드 했습니까? – Oliver
@Oliver : 어셈블리를 한 번만로드합니다. –