У меня есть 100 классов, которые имеют некоторые подобные элементы и некоторые уникальные. Я создал интерфейс, который называет те похожие элементы, например: interface 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 при написании класса.
Спасибо!
EDIT (не ленивый): классы генерируются из sql хранимых метаданных proc, что означает, что каждый раз, когда он генерируется, мне нужно будет вернуться и добавить их или изменить генератор кода для идентификации членов, которые в интерфейсе, на самом деле это не плохая идея. Я надеялся, что есть какой-то дженериковый подход или что-то еще.
Модифицировать генератор кода, вероятно, путь. Если он генерирует метод «eat()», в любом случае должно быть тривиально, чтобы этот класс реализовал некоторый интерфейс. –
Да, решение состоит в том, чтобы модифицировать генератор кода. В настоящее время он слишком упрощен для ваших нужд. –