2010-03-19 6 views
6

어셈블리의 내용을 검사하고 Windows.Forms.UserControl에서 직접 또는 간접적으로 파생 된 모든 클래스를 찾습니다.기본 클래스에서 파생 된 어셈블리의 모든 유형 가져 오기

Assembly dll = Assembly.LoadFrom(filename); 
var types = dll.GetTypes().Where(x => x.BaseType == typeof(UserControl)); 

을하지만 수업 중에 직접 UserControl을 확장 없기 때문에 빈 목록을주고있다 :

나는이 일을하고있다. 나는 그것을 빨리 할 리플렉션에 대해 충분히 알지 못한다. 그리고 내가하지 않는다면 재귀 함수를 작성하지 않을 것이다.

답변

17

대신 Type.IsSubclassOf이를 사용해야합니다

var types = dll.GetTypes().Where(x => x.IsSubclassOf(typeof(UserControl))); 
+0

는 내가 필요로 무엇을 이잖아. 감사. – captncraig

1

당신은 사용할 수 있습니다

var assembly = Assembly.Load(filename); 
    var types = assembly.GetTypes().Where((type) => typeof(UserControl).IsAssignableFrom(type)); 
관련 문제