私は100のクラスを持っており、それらにはいくつかの類似した要素といくつかの固有のものがあります。これらの類似したアイテムに名前を付けるインターフェイスを作成しました。例:interfaceIAnimal。私が通常することは次のとおりです。
class dog : IAnimal
しかし、100のクラスがあり、それらすべてを調べて、IAnimalを適用できるクラスを探す気にはなりません。
私がしたいのはこれです:
dog scruffy = new dog();
cat ruffles = new cat();
IAnimal[] animals = new IAnimal[] {scruffy as IAnimal, ruffles as IAnimal} // gives null
また
IAnimal[] animals = new IAnimal[] {(IAnimal)scruffy, (IAnimal)ruffles} //throws exception
その後、
foreach (IAnimal animal in animals)
{
animal.eat();
}
クラスを書くときにIAnimalを書くことなく、c#でフリルとだらしないものをIAnimalとして扱うようにする方法はありますか?
ありがとう!
編集(怠惰ではありません):クラスはSQLストアドプロシージャメタデータから生成されます。つまり、生成されるたびに戻って追加するか、コードジェネレーターを変更してインターフェイスにあるメンバーを識別する必要があります。実際、それは悪い考えではありません。とはいえ、ある種のジェネリックアプローチか何かがあることを望んでいました。