有时我想查找实现特定接口的所有标准.NET类型的列表。通常是出于好奇,有时也有一些实际目的(但这不是重点)。
我试图从MSDN中获取它,但是类型的页面只包含类型的子类,而不是实现接口的类型。
你知道如何做到这一点的技巧(或一个有用的工具)?
我写了这段代码(ICollection
是被调查的类型):
var result =
from assembly in AppDomain.CurrentDomain.GetAssemblies().ToList()
from type in assembly.GetTypes()
where typeof(ICollection).IsAssignableFrom(type)
select type;
foreach (var type in result)
{
Console.Out.WriteLine(type.FullName);
}
但这有一些局限性:
ICollection<>
无效)。感谢您的帮助!
答案 0 :(得分:2)
它仅搜索当前加载的内容 组件。
始终存在“添加引用”对话框,但您可能希望查看问题:List all available .NET assemblies。
我无法想办法做到这一点 对于通用接口(ICollection&lt;&gt; 不会起作用)
请尝试此查询:
from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
where type.GetInterfaces()
.Any(i => i.IsGenericType
&& i.GetGenericTypeDefinition() == typeof(ICollection<>))
select type;
如果提供链接会很好 到MSDN。
.NET Reflector支持搜索实现接口的类型(在类型下选择“派生类型”)以及在MSDN上搜索类型的文档(右键单击类型并选择“搜索MSDN”)。
如果您不喜欢该选项,您当然可以尝试使用类型的完全限定名称编写在MSDN上运行Web搜索的内容。我不知道是否有任何元数据将类型映射到其MSDN页面或完成它的干净方式。