Her öğenin bir arabirimi vardır, IItem
. Bunun yanı sıra, Öğe'den gelen IDrawableItem
olarak bilinen bir arabirim vardır.Döküm ve arabirim kalıtım
Aşağıdaki kod, bir çizilebilir öğeyi çizmeye çalışıyor, ama yapamıyor koleksiyon olarak bu sınıf depolar sadece IItem
kabul eder. Bu sınıfa IItem
'dan gelen her şeyi ekleyebilirsiniz, ancak diğer yöntemleri kullanarak yalnızca döküm gerçekleştirebilirsiniz.
foreach (var item in Items) {
item.Draw(); // The casting would go here.
}
Ben
as
vb dökme ... ama bu kabul edilebilir biliyorum? En iyi uygulama mı?
Sadece bu tür senaryoların üstesinden gelmenin başka yolları olup olmadığını merak ediyorum.
Aşağıdaki kod, çekilebilir bir öğe çizmeye çalışmaktadır, ancak bu sınıftaki koleksiyonlar yalnızca IItem'i kabul edemez. - NİYE YA? Bize tasarım hakkında biraz bilgi verin. Değiştirebilir misin? –
Jason'ın kodu sizi ikileminizden çıkaracak. Sorun, bunun nesneleriniz için doğru tasarım olup olmadığı ve 2 satırlık açıklamadan söylemek gerçekten zor. – hackerhasid
Belki bunun yerine IDrawbleItem s depolayan bir koleksiyon kullanın? –