Okay, um das ganze Chaos hier mal auf einen Punkt zu bringen, habe ich mir die Beiträge vorher durchgelesen.
Anscheinend hast du dich nach meinem Kommentar
Zitat: |
IList ist ein Interface und List implementiert dieses Interface.
Du solltest dringend die Grundlagen nacholen
Auf galileo computing gibts ein Buch, das nennt sich Visual C# 2012 |
ein bisschen angefressen gefühlt und dafür zumindest Sorry.
Dennoch nehme ich meine Aussage nicht zurück, denn es zählt unter Grundlagen, dass IList ein Interface ist und nicht instanziiert werden kann.
Wie man dennoch eine Instanz mit dem Typ IList bekommt, habe ich ebenfalls genannt, indem ich dich darauf hingewiesen habe, dass die Klasse List das Interface IList implementiert.
Auch das sind Grundlagen.
Es hatte nie etwas damit zu tun, dass du IList als abstrakte Klasse bezeichnet hast, sondern damit, dass du nicht wusstest, wie man eine Instanz mit dem Typ IList bekommt, bzw. wie man Properties richtig nutzt. Daher ruhte meine Aussage zu den Grundlagen.
Was mich (und wahrscheinlich auch einige Andere) stört, ist, dass du dich nicht einfach damit abfinden kannst, das dir Grundlagen fehlen (so ist zumindest mein Eindruck). Ich will nicht sagen, dass das schlimm ist, schließlich fängt jeder mal an, aber gerade Anfänger sollte auch auf die Tipps hören, die ihnen von erfahreneren Entwicklern gegeben werden.
Ich bin kein Moderator und kann kein Machtwort sprechen und ich wette auch, in meinen Beiträgen war bestimmt die eine oder andere Formulierung, die diese Situation begünstigt hat. Dennoch würde ich dich bitten, das Thema jetzt endlich ruhen zu lassen, damit wir zum eigentlichen Thema zurück kehren können. Das bedeutet, dass du uns endlich dabei hilfst, deine Problemstellung zu verstehen, nur dann können wir dir auch helfen.
PS @ C#:
Ich finde deine Lösung mit der ObservableCollection etwas unglücklich gewählt.
Das ist zwar eine schnelle und einfache Lösung, aber meiner Auffassung nach nicht gut, denn beim Aufruf einer Add-Methode erwartest du ja, dass das Item hinzu gefügt wird.
Wenn das Item die Validierung aber nicht besteht, wird es wieder entfernt und der Aufrufer erhält darüber keine Information. Im Gegenteil, er erhält dennoch die Information, dass das Item hinzu gefügt wird (über das CollectionChanged-Event).
Du kannst auch nie sicher stellen, dass die Methode zum Validieren an erster Stelle aufgerufen wird, weshalb andere Methoden, die von dem Event aufgerufen werden, schon mit der fertigen Liste und dem fehlerhaften Wert arbeiten.
Die ObservableCollection hat eher einen anderen Grund: Sie implementiert INotifyCollectionChanged und dient dazu, dass Nutzer über Änderungen in der Liste informiert werden.
Ein Anwendungsfall, wo die Liste Gold wert ist, sind Auflistungen in WPF. Die Liste kann sich jeder Zeit ändern und durch INotifyCollectionChanged reagiert die View automatisch darauf.
Ich möchte daher noch mal auf meine Implementierung "ValidatingList eine Seite zuvor hinweise. Die validiert noch vor dem Hinzufügen in die Liste und wirft eine Exception, wenn der Wert nicht stimmt.
Man könnte das auch anders machen, z.B. indem nicht IList implementiert, sondern von List (oder Collection) abgeleitet und die Add-Methode überschrieben wird. Das ist denke ich geschmackssache.