c#中的新手有许多框架接口,如iDisposable,Iqueryable,IEnumerable等可用的有不同用途的是否有可用于此类系统接口的列表,可用作现成参考
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();
Run Code Online (Sandbox Code Playgroud)
*说实话,我甚至不知道这种方法有多全面.
好吧,很多人都非常擅长特定目的.如果列出所有这些,则需要一段时间.
其中主要有我想补充的是以上IList/ IList<T>件(套/收藏/列表)IDictionary<TKey,TValue>,IEnumerable<T>(通用版IEnumerable)和IEnumerator(加上通用的双胞胎,虽然真相很少有人需要编写反对IEnumerator).
如果你想进入任何领域,你会很快就会遇到很多东西 - 例如IDbCommand/ IDataReader用于数据访问等等 - 但它不仅仅是重要的接口.类似的事情Stream(尽管是抽象的),但非常重要.
我认为一个更好的问题/策略可能是"考虑到我正在做[特定的X],有哪些重要的类型需要了解?".既然我们不知道[具体的X],我们就不能回答那么多.