次のクラス階層があります。
class Header { IEnumerable<Item> Item { get; set; } .... }
class HeaderA : Header { .... } // Item should have the type of IEnumerable<ItemA>
class HeaderB : Header { .... } // Item should have the type of IEnumerable<ItemB>
class Item { .... }
class ItemA : Item { .... }
class ItemB : Item { .... }
の型をコンパイル時にチェックして、Item
それがIEnumerable<ItemA>
、IEnumerable<ItemB>
for ItemA
、およびItemB
それぞれであることを確認することは可能ですか? より良いデザインはありますか?