2010-03-28 2 views
3

관리 코드에서 호출 코드에 어셈블리에 대한 정적 참조가 없다고 가정하면 런타임에 다른 어셈블리의 관리되는 형식을로드하는 방법은 무엇입니까?외부 어셈블리에서 동적으로 형식로드

Lib.dll에 컴파일 된 Lib.cs 클래스의 Lib 클래스가 있다고 가정 해 보겠습니다. Foo 클래스를 정적으로 Lib.dll에 대한 참조가없는 Foo.dll이라는 별도의 어셈블리에 작성하려고하지만 Lib.dll을로드 한 다음 클래스 Lib의 존재 여부를 반영한 ​​다음 메서드를 호출합니다. 그 위에.

리플렉션에 대한 그런 명백한 질문은 죄송합니다. 나는 약간 기사를 읽는 공개 토론에 응답을 얻는 훨씬 더 적은 시간을 걸릴 것이라는 점을 계산한다.

Assembly assembly = Assembly.LoadFile("Lib.dll"); 
ILib lib = (ILib)assembly.CreateInstance("Lib"); 
lib.doSomething(); 

코스의 lib 클래스는 foo.dll를하고 Lib.dll에서 모두 액세스 할 수 있어야합니다 ILib 인터페이스를 구현해야합니다

답변

4

여기에 짧은 조각이다. 이렇게하면 추상화를 달성 할 수 있습니다.

+0

감사합니다, Petar. 그것은 나를 위해 충분한 시작이다. 나는 디자인에 대한 내 생각을 확고히하고 있으며, 호출자가 계약을하거나 MethodInfo []를 사용하여 호출 된 객체의 vtable에 반영할지 여부를 아직 결정하지 않았습니다. 다시 한 번 감사드립니다. –

+0

당신은 환영합니다 :) –

관련 문제