c#中的框架接口列表

Vis*_*hal 7 c# interface

c#中的新手有许多框架接口,如iDisposable,Iqueryable,IEnumerable等可用的有不同用途的是否有可用于此类系统接口的列表,可用作现成参考

Dan*_*Tao 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();
Run Code Online (Sandbox Code Playgroud)

*说实话,我甚至不知道这种方法有多全面.


Mar*_*ell 5

好吧,很多人都非常擅长特定目的.如果列出所有这些,则需要一段时间.

其中主要有我想补充的是以上IList/ IList<T>件(套/收藏/列表)IDictionary<TKey,TValue>,IEnumerable<T>(通用版IEnumerable)和IEnumerator(加上通用的双胞胎,虽然真相很少有人需要编写反对IEnumerator).

如果你想进入任何领域,你会很快就会遇到很多东西 - 例如IDbCommand/ IDataReader用于数据访问等等 - 但它不仅仅是重要的接口.类似的事情Stream(尽管是抽象的),但非常重要.

我认为一个更好的问题/策略可能是"考虑到我正在做[特定的X],有哪些重要的类型需要了解?".既然我们不知道[具体的X],我们就不能回答那么多.