2010-11-21 14 views
12

Ho provato a cercare le interfacce incorporate più utilizzate in C#, ma non sono riuscito a trovare un articolo, quindi ho pensato che potremmo ricapitolare qui.quali sono le interfacce più utilizzate in C#?

usiamo la seguente convenzione nelle risposte:

IinterfaceName1: per questo

IinterfaceName2: per questo

+0

cinquanta punti a chi scrive prima uno script per esempio perlustrare tutto il codice C# su github e fornire statistiche sulle interfacce più usate. :) – Brian

+0

Completamente non scientifico, ma http://www.google.com/insights/search/#q=ienumerable%2Cinotifypropertychanged%2Cidisposable%2Cilist&cmpt=q – dahlbyk

+0

+1 per chiedere una DOMANDA MOLTO IMPORTANTE. Vedere la mia risposta per la risposta CORRETTA, non posso votare la risposta sotto perché ho una taglia in esecuzione :( – user44298

risposta

31

Le prime due nella mia mente deve essere quelle con il supporto della lingua:

  • IEnumerable<T> (e IEnumerable): per utilizzare con foreach e LINQ
  • IDisposable: per le risorse che richiedono pulizia, usato con using

di là di questo ...

  • IComparable<T> e IComparer<T>: per l'ordinamento generalizzato
  • IEquatable<T> e IEqualityComparer<T>: per l'uguaglianza generalizzata
  • IList<T> e ICollection<T>: per le collezioni mutabili
  • IDictionary<T,K>: per collezioni di ricerca
+1

D'accordo con quanto sopra, aggiungerei solo IBindingList e INotifyPropertyChanged per l'associazione dei dati in WinForms – cordialgerm

+1

+1 per IDisposable – PhilPursglove

+1

Non comune come le interfacce di raccolta, ma anche 'ISerializable' è importante. – CodesInChaos

10

INotifyPropertyChange: per l'associazione dati per classi di interfaccia utente in WPF, WinForms e Silverlight

+0

Winforms (e, IIRC WPF) supportano anche il * Modello modificato –

5

IQueryable<T>: consente di eseguire le richieste nei confronti di fonti di dati interrogabile. Per esempio

 IQueryable<Project> projects = db.Projects; 
     var selectedItems = projects 
      .Where(x => x.Workers.Count() > 10 && x.Status != 1) 
      .ToArray(); 

In questo esempio il filtraggio sarebbe stato fatto su SQL Server (in coinvolge la meccanica difficile con traducendo Espressione x => x.Workers.Count() > 10 && x.Status != 1 di istruzioni SQL) Quindi nessun bisogno di scrivere comandi personalizzati SQL di utilizzare tutte le forze di origine dati.

Inoltre può essere utilizzato non solo con SQL, è possibile interrogare oggetti o qualsiasi altra cosa, basta trovare attuazione IQueryable<T>

Problemi correlati