Come nel titolo, qualcuno sa perché l'interfaccia ICollection
non contiene un metodo Aggiungi? Sembra molto strano che la versione generica, ICollection<T>
, abbia un Add
ma non lo sia ICollection
. Chiunque abbia una conoscenza più approfondita di questo sarebbe davvero d'aiuto.Perché ICollection non contiene un metodo Aggiungi?
Riguardo al motivo per cui mi interessa, sfortunatamente gli sviluppatori che hanno creato SharePoint non hanno mai imparato a conoscere i generici, quindi ogni singola raccolta nell'API è una raccolta non generica basata su ICollection
. Mi piacerebbe collegare diversi metodi di estensione a ICollection
che comportano l'aggiunta alla raccolta, tra le altre cose, ma questo sembra impossibile (almeno non possibile senza una riflessione).
EDIT:
poche persone sono speculando Il motivo è perché ICollection.Add
richiederebbe un Object
, e quindi non sarebbe typesafe. Questo non è il caso. IList
ha un metodo Add
che accetta uno Object
. Devi semplicemente eseguire un controllo tipografico e un cast in un metodo che richiede Object
.
L'argomento che un array implementa ICollection
e pertanto non può avere un Add
inoltre non regge acqua. Se ICollection
avesse un metodo Add
, avrebbe solo bisogno di essere esplicitamente implementato sugli array e lanciare un'eccezione (come molti degli strumenti dei metodi che l'attrezzo fa attualmente).
Speravo davvero che qualcuno avesse un riferimento a una spiegazione di uno dei designer.
lo fa? http://msdn.microsoft.com/en-us/library/63ywd54z.aspx –
@MicahArmantrout, dice "ICollection", ma "ICollection" no. –
@MicahArmantrout È collegato alla versione generica. Ha già detto che la versione generica ce l'ha. Chiede perché il [non generico] (http://msdn.microsoft.com/en-us/library/system.collections.icollection (v = vs.100) .aspx) non lo fa. – vcsjones