2010-11-29 5 views
2

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?

+0

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? –

+0

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? –

Répondre

7

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 
3

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.

4

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 :-).

alt text

2

Cela devrait vous donner quelques réponses:

  1. System.Collections.Generic Namespace;
  2. System.Collections.Concurrent Namespace.

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é:

L'espace de noms d'espace de noms System.Collections.Concurrent fournit des collections génériques thread-safe.

2

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
Questions connexes