2010-04-30 43 views

Trả lời

23

Không trực tiếp, tuy nhiên bạn có thể sử dụng AppDomain.GetAssemblies() để nhận tất cả các cụm hiện đang được nạp, sau đó sử dụng Assembly.GetTypes() để nhận tất cả các loại trong hội đồng đó. Sau đó, sử dụng Type.IsSubclassOf() để xác định xem đó có phải là lớp con của loại bạn đang theo dõi hay không.

+0

Cảm ơn bạn. Nó hoạt động. – Polaris

+0

Có cách nào để chỉ nhận được các hội đồng người dùng (trái ngược với các cụm hệ thống) không? Nếu có một tùy chọn để có được lắp ráp này và tất cả các tham chiếu (để này) hội đồng đó sẽ là một giải pháp tốt. – Shimmy

+0

Tìm thấy: http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getreferencedassemblies.aspx – Shimmy

4

bạn có thể chọn các hội bạn muốn kiểm tra, nhận các loại với phương pháp Assembly.GetTypes() và thử nghiệm cho mỗi người trong số họ nếu nó là một lớp con với Type.IsSubclassOf()

thấy Assembly membersType members

19

Bạn có thể làm điều này :

var subclassTypes = Assembly 
    .GetAssembly(typeof(BaseClass)) 
    .GetTypes() 
    .Where(t => t.IsSubclassOf(typeof(BaseClass))); 
3

thử mã này:

public static IEnumerable<Type> GetAllSubclassOf(Type parent) 
{ 
    foreach (var a in AppDomain.CurrentDomain.GetAssemblies()) 
     foreach (var t in a.GetTypes()) 
      if (t.IsSubclassOf(parent)) yield return t; 
} 
Các vấn đề liên quan