c#中的新手 有许多框架接口,如iDisposable,Iqueryable,IEnumerable等,它们有不同的用途 是否有可用于此类系统接口的列表,可用作现成参考
答案 0 :(得分:7)
WELL ,下面是我运行的快速脚本,用于扫描计算机的.NET程序集并查找其中定义的所有接口类型
输出文件 1657行 *,所以...您可能希望稍微缩小搜索范围;)
Console.Write("Enter a path to write the list of interfaces to: ");
string savePath = Console.ReadLine();
var errors = new List<string>();
using (var writer = new StreamWriter(savePath))
{
string dotNetPath = @"C:\Windows\Microsoft.NET\Framework";
string[] dllFiles = Directory.GetFiles(dotNetPath, "*.dll", SearchOption.AllDirectories);
foreach (string dllFilePath in dllFiles)
{
try
{
Assembly assembly = Assembly.LoadFile(dllFilePath);
var interfaceTypes = assembly.GetTypes()
.Where(t => t.IsInterface);
foreach (Type interfaceType in interfaceTypes)
{
writer.WriteLine(interfaceType.FullName);
Console.WriteLine(interfaceType.FullName);
}
}
catch
{
errors.Add(string.Format("Unable to load assembly '{0}'.", dllFilePath));
}
}
}
foreach (string err in errors)
{
Console.WriteLine(err);
}
Console.ReadLine();
*说实话,我甚至不知道这种方法有多全面。
答案 1 :(得分:5)
嗯,很多人都非常擅长特定目的。如果您列出所有,则需要一段时间。
我在上面添加的主要内容包括IList
/ IList<T>
(集合/集合/列表),IDictionary<TKey,TValue>
,IEnumerable<T>
({{1}的通用版本1}})和IEnumerable
(加上通用双胞胎,虽然实际上很少有人需要对IEnumerator
进行编码)。
如果你想进入任何领域,你会很快就会遇到更多的东西 - 例如IEnumerator
/ IDbCommand
用于数据访问等等 - 但它不仅仅是< em>接口很重要。 IDataReader
之类的东西是一个类(尽管是抽象的),但非常重要。
我认为一个更好的问题/策略可能是“考虑到我正在做[特定X],有哪些重要类型需要了解?”。由于我们不知道[具体的X],我们无法回答那么多。
答案 2 :(得分:4)
这是.NET Framework类库文档
http://msdn.microsoft.com/en-us/library/ms229335.aspx
通过单击选定的命名空间,您将看到该命名空间中定义的接口。 在我的拙见中,这样的分类列表比仅仅简单的接口列表更适合作为参考。
答案 3 :(得分:0)
这里有一些LINQ来获取接口集合,其中“files”是一个要搜索的库数组.....
var interfaces = (from fileName in files
select Assembly.LoadFile(fileName)
into assembly
select assembly.GetTypes()
into typesInAssembly
from interfacesInType in typesInAssembly.Select(type => type.GetInterfaces())
from interfaceInType in interfacesInType
select interfaceInType)
.Distinct()
.OrderBy( i => i.Name);