Как разрешить свойство класса иметь несколько / гибких типов в C #?

В C # у меня есть три класса: Person, Cat и Dog.

И классы Cat, и Dog имеют метод Eat ().

Я хочу, чтобы у класса Person было свойство Pet.

Я хочу иметь возможность вызывать метод Eat для Cat и Dog через Person через что-то вроде Person.Pet.Eat (), но я не могу, потому что свойство Pet должно быть либо типа Cat, либо Dog. .

В настоящее время я обхожу это с помощью двух свойств в классе Person: PetDog и PetCat.

На данный момент это нормально, но если бы мне нужно было 100 различных типов животных в качестве домашних питомцев, то я действительно не хочу иметь 100 различных свойств Pet в классе Person.

Есть ли способ обойти это с помощью интерфейсов или наследование? Есть ли способ установить для питомца тип Object, но при этом получить доступ к свойствам любого назначенного ему класса животных?

5
задан Abe Miessler 7 September 2010 в 17:29
поделиться