Existe-t-il une liste exhaustive de tous les types génériques «base» (non utilisés dans un sens orienté objet mais plus communément) dans le 4.0 .NET Framework? J'ai trouvé this list que j'envoie souvent aux développeurs de niveau plus récent/moyen pour qu'ils puissent comprendre comment les types non génériques correspondent aux types génériques, mais ceci n'est en aucun cas exhaustif. Je cherche quelque chose qui inclut également des choses telles que KeyValuePair<>
, Tuple<>
, et d'autres génériques de base qui peuvent ne pas être très bien connus. Interfaces telles que IObservable<>
serait bien mais pas nécessairement nécessaire.Quels sont tous les types/collections génériques dans le 4.0 .NET Framework?
Répondre
est ici un fragment powershell à la liste tous les types génériques dans les assemblées du système
[AppDomain]::CurrentDomain.GetAssemblies() |
? { $_.FullName -match "^System" -or $_.FullName -match "mscorlib"} |
% { $_.GetTypes() | ? { $_.ContainsGenericParameters } }
Cela pourrait être adapté pour donner une liste plus complète. Si vous chargez powershell w/ a .Net 4 config, vous obtiendrez la liste 4.0.
Count Name
----- ----
1 System.Xml
12 System.Data
67 System
187 mscorlib
325 System.Core
Vous pouvez trouver dans l'espace de noms System.Collections.Generic http://msdn.microsoft.com/en-us/library/system.collections.generic.aspx
Il n'est pas plein, il existe d'autres types et interfaces comme IQueryable
Vous pouvez réfléchir à toutes les assemblées BCL et utiliser la méthode IsGenericType pour obtenir une liste des types génériques.
Dans Visual Studio Ouvrez l'Explorateur d'objets, choisissez .NET Framework 4, la recherche pour IEnumerable<T>
et élargir la liste des types dérivés. C'est beaucoup trop pour coller ici :-).
Cela devrait vous donner quelques réponses:
Le System.Collections.Generic espace de noms fournit la plupart des collections génériques que nous connaissons déjà de .NET 3.5. Il existait déjà trois collections à thread sécurisé:
- SynchronizedCollection Class;
- SynchronizedKeyedCollection Class;
- SynchronizedReadOnlyCollection Class.
L'espace de noms d'espace de noms System.Collections.Concurrent fournit des collections génériques thread-safe.
Voici mon code. Ajoutez plus d'assemblées selon vos désirs.
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);
}
}
Résultats:
- ensembles cochés:
- mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089
- Système, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089
System.Core, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089
Classes génériques:
- System.Action`1
- System.Action`10
- System.Action`11
- System.Action`12
- System.Action`13
- System.Action`14
- System.Action`15
- System.Action`16
- System.Action`2
- System.Action`3
- System.Action`4
- System.Action`5
- System.Action`6
- System.Action`7
- System.Action`8
- System.Action`9
- System.ArraySegment`1
- System.Collections.Concurrent.BlockingCollection`1
- System.Collections.Concurrent.ConcurrentBag`1
- System.Collections.Concurrent.ConcurrentDictionary`2
- System.Collections.Concurrent.ConcurrentQueue`1
- System.Collections.Concurrent.ConcurrentStack`1
- System.Collections.Concurrent.IProducerConsumerCollection`1
- System.Collections.Concurrent.OrderablePartitioner`1
- System.Collections.Concurrent.Partitioner`1
- System.Collections.Generic.Comparer`1
- System.Collections.Generic.Dictionary`2
- System.Collections.Generic.EqualityComparer`1
- System.Collections.Generic.HashSet`1
- System.Collections.Generic.ICollection`1
- System.Collections.Generic.IComparer`1
- System.Collections.Generic.IDictionary`2
- System.Collections.Generic.IEnumerable`1
- System.Collections.Generic.IEnumerator`1
- System.Collections.Generic.IEqualityComparer`1
- System.Collections.Generic.IList`1
- System.Collections.Generic.ISet`1
- System.Collections.Generic.KeyValuePair`2
- System.Collections.Generic.LinkedList`1
- System.Collections.Generic.LinkedListNode`1
- System.Collections.Generic.List`1
- System.Collections.Generic.Queue` 1
- System.Collections.Generic.SortedDictionary`2
- System.Collections.Generic.SortedList`2
- System.Collections.Generic.SortedSet`1
- System.Collections.Generic.Stack`1
- System.Collections.ObjectModel.Collection`1
- System.Collections.ObjectModel.KeyedCollection`2
- System.Collections.ObjectModel.ObservableCollection`1
- System.Collections.ObjectModel.ReadOnlyCollection`1
- System.Collections.ObjectModel.ReadOnlyObservableCollection`1
- System.Comparison`1
- System.ComponentModel.BindingList`1
- System.Conv erter`2
- System.EventHandler`1
- System.Func`1
- System.Func`10
- System.Func`11
- System.Func`12
- System.Func` 13
- System.Func`14
- System.Func`15
- System.Func`16
- System.Func `17
- System.Func`2
- System.Func`3
- System.Func`4
- System.Func`5
- System.Func`6
- System.Func`7
- System.Func`8
- System.Func`9
- System.IComparable`1
- System.IEquatable`1
- System.IObservable`1
- System.IObserver`1
- System.Lazy`1
- System.Linq.EnumerableExecutor`1
- System.Linq.EnumerableQuery`1
- System.Linq .Expressions.Expression`1
- System.Linq.IGrouping`2
- System.Linq.ILookup`2
- System.Linq.IOrderedEnumerable`1
- System.Linq.IOrderedQueryable`1
- System.Linq.IQueryable`1
- System.Linq.Lookup`2
- System.Linq.OrderedParallelQuery`1
- System.Linq. ParallelQuery`1
- System.Nullable`1
- System.Predicate`1
- System.Runtime.CompilerServices.CallSite`1
- Sy stem.Runtime.CompilerServices.ConditionalWeakTable`2
- System.Runtime.CompilerServices.ReadOnlyCollectionBuilder`1
- System.Runtime.CompilerServices.RuleCache`1
- System.Runtime.CompilerServices.StrongBox`1
- système. Security.AccessControl.AccessRule`1
- System.Security.AccessControl.AuditRule`1
- System.Security.AccessControl.ObjectSecurity`1
- System.Threading.Tasks.Task`1
- System.Threading.Tasks.TaskCompletionSource`1
- System.Threading.Tasks.TaskFactory`1
- System.Threading.ThreadLocal`1
- System.Tuple`1
- System.Tuple`2
- System.Tuple`3
- System.Tuple`4
- System.Tuple`5
- System.Tuple`6
- Syste m.Tuple`7
- System.Tuple`8
- 1. Quels sont les risques associés au déploiement de .NET Framework 4.0?
- 2. Ciblage .NET Framework 4.0
- 3. .NET Framework 4.0 SDK
- 4. .net framework 4.0 documentation
- 5. Quels sont les services .NET?
- 6. Confiance totale dans .Net framework 4.0
- 7. Que sont les collections en .net 4.0
- 8. MSBuild ExecuteDDL échoue dans .NET Framework 4.0
- 9. Quels sont les exemples de modèles de référentiel à utiliser avec Entity Framework 4.0?
- 10. Framework .NET 4.0 sur le même serveur que .NET 1.1
- 11. Quels sont les autres clients http génériques disponibles?
- 12. Comment savoir si des entités dans le contexte sont sales avec .Net Entity Framework 4.0
- 13. Asp.net MVC2 est-il inclus dans le framework .net 4.0?
- 14. Quelles sont les nouvelles fonctionnalités de .Net Framework 4.0 pour les développeurs d'applications C# et Windows?
- 15. Quels sont les avantages de l'utilisation de génériques dans les signatures de méthodes?
- 16. Les génériques ne sont pas génériques!
- 17. Quels sont les CMS basés sur .Net les plus populaires?
- 18. Le programme d'installation de .Net Framework 4.0 inclut-il .Net Framework 3.5?
- 19. Quels sont tous les exemples de sucre syntaxique à Scala?
- 20. Visual Studio 2008 et .NET Framework 4.0
- 21. Les caractères génériques sont-ils autorisés dans le fichier sitemap.xml?
- 22. Quels sont tous les outils de débogage disponibles pour l'iPhone?
- 23. Quels sont tous les résultats des actions ASP.Net MVC?
- 24. Quels sont tous les caractères d'espaces blancs japonais?
- 25. Quels sont les sites que les développeurs de .net visitent?
- 26. NHibernate prend en charge le framework .NET 4.0?
- 27. Quels sont les attributs?
- 28. En utilisant Entity Framework 4.0 dans un .Net 3.5 Application
- 29. Quels sont les ports requis pour les appels DNS WMI?
- 30. Quels sont les modèles de conception utilisés dans le framework Struts 1.x?
Peut-être que nous pourrions écrire tous les médicaments génériques que nous supposerons utiles que les réponses ci-dessous? Et vous générez une liste de types à partir des réponses? –
Malheureusement, ce que vous demandez doit être mieux défini. 'KeyValuePair <>' et 'Tuple <>' ne sont pas des types de collection (bien que 'KeyValuePair' soit étroitement associé à' Dictionary <> '). 'IObservable' n'est pas non plus une interface de collection, bien que' ObservableCollection 's'en serve. Voulez-vous des types comme 'IQueryable', qui ne représentent pas une collection mais un référentiel (de taille indéfinie) sur lequel vous pouvez lancer des requêtes? –