2010-09-13 14 views
6

Newbie in C# ci sono molte interfacce framework come IDisposable, IQueryable, IEnumerable disponibili che hanno diversi usi Esiste un elenco a disposizione per tali interfacce di sistema che può essere utilizzato di riferimento prontoElenco di interfacce Framework in C#

risposta

7

BENE, di seguito un breve scritto mi sono imbattuto per la scansione di assembly .NET di Risorse del computer e trovare tutti i tipi di interfaccia definite al loro interno

Il file di output è stato a lungo 1657 linee *, quindi ... si potrebbe desiderare di restringi la tua ricerca un po ';)

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(); 

* E, a dire il vero, non so nemmeno quanto fosse completo questo approccio.

5

Bene, molti sono molto personalizzati per scopi specifici. Se hai elencato tutte le di esse ci vorrebbe un po '.

I principali quelli mi piacerebbe aggiungere a quanto sopra sono IList/IList<T> (insiemi/collezioni/lists), IDictionary<TKey,TValue>, IEnumerable<T> (versione generica del IEnumerable), e IEnumerator (più doppia generica, anche se in verità poche persone hanno bisogno di codice contro IEnumerator).

Se si desidera in qualsiasi area, ci sarebbero molti molti di più che si incontra rapidamente - cose come IDbCommand/IDataReader per i dati di accesso, ecc - ma non è solo interfacce che sono importanti. Cose come Stream sono una classe (anche se astratta), ma importante.

Penso che una migliore domanda/tattica potrebbe essere "dato che sto facendo [X specifica], quali sono i tipi importanti da sapere?". Dato che non conosciamo la [specifica X], non possiamo rispondere così tanto.

+0

+1: risposta molto più pratico della mia. –

+0

Un buon consiglio, ma penso che ci sia qualcosa da dire sull'essere in grado di esplorare un po 'e vedere cosa ha in serbo il quadro. Non sai mai quando avrai bisogno di un Revertible Change Tracking personalizzato, per esempio. (Http://msdn.microsoft.com/en-us/library/system.componentmodel.irevertiblechangetracking.aspx) –

4

Ecco una documentazione di .NET Framework Class Library

http://msdn.microsoft.com/en-us/library/ms229335.aspx

Cliccando su selezionato namespace vedrete interfacce definite in tale spazio dei nomi. Nella mia umile opinione, questa lista categorizzata è molto più comoda da usare come riferimento che semplicemente una semplice lista di interfacce.

0

Ecco alcuni LINQ per ottenere un insieme di interfacce, dove "file" è una serie di librerie per cercare .....

var interfaces = (from fileName in files 
        select Assembly.LoadFile(fileName) 
        into assembly 
        select assembly.GetTypes() 
        into typesInAssembly 
        from interfacesInType in typesInAssembly.Select(type => type.GetInterfaces()) 
        from interfaceInType in interfacesInType 
        select interfaceInType) 
        .Distinct() 
        .OrderBy(i => i.Name); 
Problemi correlati