2011-10-12 38 views

回答

0

以下是mscorlib.dll的示例。它找到所有具有名爲「容量」的屬性的類。

Assembly asm = Assembly.Load("mscorlib.dll"); 
foreach (Type type in asm.GetTypes()) 
{ 
    foreach (MemberInfo mem in type.GetMembers()) 
    { 
     if ((mem.MemberType == MemberTypes.Property) && (mem.Name == "Capacity")) 
      Console.WriteLine(type); 
    } 
} 

或者,使用LINQ:

var asm = Assembly.Load("mscorlib.dll"); 
foreach (var type in from type in asm.GetTypes() 
        from mem in type.GetMembers() 
        where (mem.MemberType == MemberTypes.Property) && 
         (mem.Name == "Capacity") 
        select type) 
    Console.WriteLine(type); 

這裏是輸出:

System.Text.StringBuilder 
System.Collections.CollectionBase 
System.Collections.ArrayList 
System.Collections.ArrayList+IListWrapper 
System.Collections.ArrayList+SyncArrayList 
System.Collections.ArrayList+FixedSizeArrayList 
System.Collections.ArrayList+ReadOnlyArrayList 
System.Collections.ArrayList+Range 
System.Collections.SortedList 
System.Collections.SortedList+SyncSortedList 
System.Collections.Generic.List`1[T] 
System.IO.MemoryStream 
System.IO.UnmanagedMemoryStream 
System.IO.PinnedBufferMemoryStream 
System.IO.UnmanagedMemoryAccessor 
System.IO.UnmanagedMemoryStreamWrapper 
2

我不認爲這是直接可能的。您將不得不通過反射搜索所有課程,並且您必須在每個課程中查找該特定房產

2

如果您有PropertyInfo,則可以使用DeclaringType屬性。如果你只有一些字符串,你不能從中得到很多。您必須首先獲得財產,但獲得您首先需要獲得聲明類的財產,因此您已經知道聲明類。