Ich habe eine Klasse namens Foo. Diese Klasse enthält eine Sammlung von Child-Objekten vom Typ FooChildBase, aber ich habe auch eine weitere Klasse vom Typ FooChildTwo, die von FooChildBase erbt.Erweitern eines Objekts und aller untergeordneten Sammlungen?
Class Foo
Public Children As IList(Of FooChildBase)
End Class
Class FooChildBase
Public Info As String
End Class
Class FooChildTwo
Inherits FooChildBase
Public ExtraInfo As String
End Class
Das alles funktioniert gut. Jetzt muss ich eine Spezialisierung meines Foo-Objekts mit zusätzlichen Informationen verwenden.
Class FooSpecial
Inherits Foo
Public SpecialInfo As String
End Class
Class FooChildSpecial
Inherits FooChildBase
Public SpecialChildInfo As String
End Class
Was würde ich tun möchte, ist habe meine FooSpecial Klasse behandeln es ist Kinder Sammlung, als ob sie FooChildSpecial Objekte waren, aber noch in der Lage sein FooChildTwo Objekte, um es hinzuzufügen. Ist das möglich und wenn ja, wie kann es gemacht werden?
BEARBEITEN Ich denke, meine ursprüngliche Frage war falsch. Ich muss FooChildSpecial-Klasse, um alle Objekte in der Children-Auflistung mit den zusätzlichen Werten zu umbrechen, ob es FooChildBase oder FooChildTwo oder XXX sind.
Hoffe das macht Sinn! Bitte lassen Sie mich wissen, wenn mehr Klärung erforderlich ist.
James
Danke für die Antwort.Ich glaube jedoch nicht, dass ich es richtig erklärt habe. Siehe meine Bearbeitung über – James
Danke nochmal für die Antwort. Gibt es einen Weg um dies zu erreichen, indem man eher die Zusammensetzung als die Vererbung verwendet. Vielleicht etwas wie ein Dekorateur? – James
Wenn Sie ein Wrapper (Decorator) -Muster implementiert haben, kann FooChildSpecial ein IFooChild-Objekt umbrechen. Dazu müssen Sie jedoch zuerst das IFooChild-Objekt erstellen und es dann an das FooChildSpecial-Objekt übergeben. Darüber hinaus wäre es nicht möglich, das FooChildSpecial-Objekt direkt auf ein FooChildTwo zu übertragen. Stattdessen müssten Sie auf das zugrunde liegende Wrapped-Objekt zugreifen und dieses umwandeln. Siehe auch: http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_wrapper302122006080905AM/csharp_wrapper3.aspx?ArticleID=2dc1959d-83a0-4d88-ac5b-70dddc54380c – JustLoren