У меня есть 100 классов, которые имеют некоторые похожие элементы и некоторые уникальные. Я создал интерфейс, который называет эти похожие элементы, например: интерфейс IAnimal. Что я обычно делаю, это:
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();
}
Есть ли способ заставить c # позволять мне рассматривать оборки и неряшливости как IAnimal без необходимости писать: IAnimal при написании класса.
Спасибо!
РЕДАКТИРОВАТЬ (не ленивый): классы генерируются из sql хранимых метаданных proc, что означает, что каждый раз, когда они генерируются, мне придется возвращаться и добавлять их или модифицировать генератор кода, чтобы определить членов, которые находятся в интерфейс, на самом деле это неплохая идея. Я надеялся, что был какой-то общий подход или что-то в этом роде.