C# Braucht man zusätzliche Interfaces für CollectionBase?

roker002

Commander
Registriert
Dez. 2007
Beiträge
2.103
Wenn ich die Codeanalyse ausführe bekomme ich eine Warnung (CA1010) geliefert. Demnach sollte ich zur meiner Collection noch einen Interface IList<T> hinzufügen.
Wenn ich das machen würde muss ich vieles dazu implementieren was man (gar)nicht braucht. Kann jemand vielleicht empfehlen ob man IList hinzufügen sollte oder nicht?

Was ist den so anders ohne IList? klar es müssen noch einige Methode dazu implementiert werden, aber sonst?
 
CollectionBase implementiert IList, also das nicht generische Interface.Das ist nur ein Hinweis für dich um vielleicht etwas typsicherer zu werden. Du musst es nicht unbedingt machen, aber es wäre sauberer und die Typsicherheit wäre höher.
 
hmm wenn ich versuche den IList mit rein zunehmen spuckt der Compiler einen Fehler aus...

Fehler 5 "Systems.MyCollection" implementiert den Schnittstellenmember "System.Collections.Generic.IEnumerable<Systems.MyColl>.GetEnumerator()" nicht. "Systems.RechnungCollection.GetEnumerator()" hat nicht den entsprechenden Rückgabetyp "System.Collections.Generic.IEnumerator<Systems.MyColl>" und kann "System.Collections.Generic.IEnumerable<Systems.MyColl>.GetEnumerator()" daher nicht implementieren.

Ich habe versucht den Enumerator reinzustellen aber es kommt immer noch das gleiche Fehler.

Code:
public System.Collections.IEnumerator GetEnumerator()
        {
            // Refer to the IEnumerator documentation for an example of
            // implementing an enumerator.
            throw new NotImplementedException("The method or operation is not implemented.");
        }

Code:
public class MyCollection: 
    System.Collections.CollectionBase, 
    IList<MyColl>, 
    IEnumerable<MyColl>
{...}
 
ich kenne schon, dass CollectionBase das ganze hat... ich dachte nur, dass der Compiler deswegen spinnt weil es nicht dazu implementiert wurde. Habe auch versucht den IEnumerator<T> hinzuzufügen aber es kommt auf das gleiche hinaus.

Von dem ganzen typensicheren Programmieren klappt irgendwie nix :D
 
Naja so wird das ja auch nichts. CollectionBase gibt dir doch schon alles was du brauchst.Entweder du machst es über CollectionBase oder über die Typsicheren Interfaces IEnumerable<T> und IEnumerator<T>, dann musst du den ganzen kram aber selber implementieren. Wie gesagt lies dir mal den Beitrag durch, mir scheint dir fehlen paar Grundlagen was Generics und IEnumerable<T> angeht.
 
Ich kenne schon IEnumerator<T>.

Das Problem ist... der will mir nicht kompilieren. Es kommt immer auf des gleiche hinaus! Ich habe alles implementiert was mit Enumerator zusammenhängt.

Naja ich lasse es vorerst! Trotzdem danke für die Tips
 
Pass auf, ich mach dir nen deal. Schick mir den Code mal komplett von der Collection + die Metainformationen die man dazu braucht. ich schaus mir an, mach dir kommentare und schicks zurück,ok?
 
Zurück
Oben