例如,如果我想查看实现IList或IDictionary的某些内容的.NET选项。 例如在MSDN文档中有没有找到的方法?
我认为可以使用Reflector来实现。
您也可以通过编程的方式实现此操作。
如果您知道类型所在的程序集(我正在使用 mscorlib
,因为那里有 string
),则可以使用以下方法构建列表:
List<Type> implementors =
Assembly.GetAssembly(typeof(string))
.GetTypes()
.Where(type => type.GetInterfaces().Contains(typeof(IList)))
.ToList();
List<Type> implementors = new List<Type>();
foreach (Type type in Assembly.GetAssembly(typeof(string)).GetTypes())
{
foreach (Type interfaceType in type.GetInterfaces())
{
if (interfaceType == typeof(IList))
{
implementors.Add(type);
}
}
}
implementors
列表将保存实现接口IList
的Types
列表。您可以将IList
更改为任何您想要的接口,如IDictionary
,ICollection
等。
如果您想将其扩展到当前AppDomain
中的所有程序集,可以执行以下操作:
List<Type> implementors =
AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes()
.Where(type => type.GetInterfaces().Contains(typeof(IList)))
).ToList();
http://msdn.microsoft.com/en-us/library/system.type.getinterfaces.aspx
应该可以解决问题
你有特定的使用情境吗?我能马上想到以下方式:
System.Collections.ArrayList (or derived)
System.Collections.ObjectModel.Collection<T> derived
System.Collections.CollectionBase derived
System.Collections.DictionaryBase derived
System.Collections.Hashtable (or derived)