2010-05-10 3 views
2

.dll에서 유형을 유도하려고합니다 (실행 프로젝트에서도 참조 됨). 내가 전화 :assembly.GetTypes()가 모든 유형을 반환하지 않습니다.

public static void LoadPlugin(string pluginFile) 
    { 
     Assembly assembly = Assembly.LoadFrom(pluginFile); 

     foreach (Type type in assembly.GetTypes()) 
     { 
      // play with it 
     } 
    } 

이의 그들 중 몇로드 :

public partial class Mathematics : UserControl, IMathematics, IPortable 

public partial class Welcome : UserControl 

하지만 다음 하나, 일부 다른 사람을 무시됩니다

public partial class Test : UserControl, ITest, IPortable 

그들은 모두 같은 어셈블리에 있습니다. ame 네임 스페이스. public static void LoadPlugin(string pluginFile) 메서드는 실행중인 프로젝트에서도 참조되는 다른 어셈블리에 있습니다.

예외가 발생하지 않습니다. 모든 유형을로드하지 않는 문제는 무엇입니까? 어떤 아이디어?

+0

GetTypes()가 어셈블리에 정의 된 모든 PUBLIC 클래스를 반환하지 않고 둘 다 Export 특성을 가지고 있기 때문에 비슷한 문제가 발생합니다. 나는 그것이 우연인지 또는 무엇인지는 모르지만 인터페이스를 구현하는 유형은 인터페이스를 구현하지 않는 유형은보고되지 않는 반면 인터페이스는 구현되지 않습니다. –

답변

2

형식이 호출 어셈블리에서 올바르게 참조되지 않은 세 번째 어셈블리에서 상속되지 않도록로드 되었습니까?

+0

안녕하세요. 답장을 보내 주셔서 감사합니다. 2 개의 어셈블리를 사용하고 있습니다 : 1. 관심있는 유형이 들어 있습니다.이 프로젝트는 실행중인 프로젝트에서 참조가 있습니다. 2. 어셈블리를로드하기위한 논리를 포함하는 프로젝트. 이것은 하나의 참조 번호가 있습니다. 1. 프로젝트 및 실행중인 프로젝트에서도. 방금 ​​프로젝트를 재구성했습니다 (모든 것을 삭제 한 다음 새 프로젝트, 클래스가 들어있는 파일 추가 등). 몇 가지 이유로, 재구성하기 전에 얻지 못했던 몇 가지 유형을 얻을 수 있습니다. 또한 이전에 가지고 있던 일부 유형은 더 이상 볼 수 없습니다. 어디에서 잘못 했습니까? – meta

관련 문제