Każdy element ma interfejs, IItem
. Oprócz tego istnieje interfejs znany jako IDrawableItem
, który dziedziczy po Item.Dziedziczenie i dziedziczenie interfejsu
Poniższy kod próbuje narysować element do pobrania, ale nie może tak, jak w kolekcji tej, że sklepy tej klasy akceptują tylko IItem
. Do tej klasy można dodać wszystko, co dziedziczy od IItem
, ale inne metody można uzyskać tylko za pomocą rzutowania.
foreach (var item in Items) {
item.Draw(); // The casting would go here.
}
Wiem, jak obsady, as
itp ... ale czy jest to do przyjęcia? Czy to najlepsza praktyka?
Zastanawiasz się, czy istnieją inne sposoby radzenia sobie z takimi scenariuszami.
Poniższy kod próbuje narysować element, który może być losowany, ale nie może być zbiorem, który zapisuje w tej klasie tylko IItem. - CZEMU? Opowiedz nam trochę o projekcie. Czy możesz to zmienić? –
Kod Jason pozwoli ci wyjść z dylematu. Chodzi o to, czy jest to odpowiedni projekt dla twoich obiektów, i to jest naprawdę trudne z 2 linii opisu. – hackerhasid
Być może użyj kolekcji, która przechowuje IDrawbleItem s zamiast? –