4.0 .NET Framework中是否存在所有“基础”(在面向对象的意义上没有使用但在常识中更常用)泛型类型的详尽列表?我发现this list我经常发送更新/中级开发人员,以便他们能够理解非泛型类型如何映射到泛型类型,但这绝不是详尽无遗的。我正在寻找的东西还包括KeyValuePair<>
,Tuple<>
以及其他可能不为人所知的基本泛型。诸如IObservable<>
之类的接口会很好但不一定是必需的。
答案 0 :(得分:7)
这是一个powershell片段,列出了系统程序集中的所有泛型类型
[AppDomain]::CurrentDomain.GetAssemblies() |
? { $_.FullName -match "^System" -or $_.FullName -match "mscorlib"} |
% { $_.GetTypes() | ? { $_.ContainsGenericParameters } }
这可以用来提供更全面的清单。如果您加载powershell w/ a .Net 4 config,则会获得4.0列表。
Count Name
----- ----
1 System.Xml
12 System.Data
67 System
187 mscorlib
325 System.Core
答案 1 :(得分:4)
在Visual Studio中打开对象资源管理器,选择“.NET 4 Framework”,搜索IEnumerable<T>
并展开派生类型列表。粘贴在这里太多了: - )。
答案 2 :(得分:3)
您可以反思所有BCL程序集并使用IsGenericType方法获取泛型类型列表。
答案 3 :(得分:2)
您可以在System.Collections.Generic命名空间中找到它 http://msdn.microsoft.com/en-us/library/system.collections.generic.aspx
答案 4 :(得分:2)
这应该给你一些答案:
System.Collections.Generic 命名空间提供了我们从.NET 3.5中已经知道的大多数通用集合。已经提供了三个线程安全的集合:
System.Collections.Concurrent 命名空间命名空间提供了线程安全的通用集合。
答案 5 :(得分:2)
这是我的代码。根据需要添加更多组件。
static void Main(string[] args)
{
Assembly[] assemblies = new Assembly[] {
typeof(string).Assembly,
typeof(Uri).Assembly,
typeof(System.Linq.Enumerable).Assembly};
List<string> final = new List<string>();
Debug.WriteLine("Checked assemblies: ");
foreach (Assembly assembly in assemblies)
{
Debug.WriteLine(assembly.FullName);
Type[] types = assembly.GetTypes();
IEnumerable<Type> genericTypes = types.Where(t => t.IsGenericType && t.IsPublic);
foreach (Type t in genericTypes)
{
final.Add(t.FullName);
}
}
final.Sort();
Debug.WriteLine("Generic classes: ");
foreach (string s in final)
{
Debug.WriteLine(s);
}
}
结果:
System.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089
通用课程: