Это зависит от Ваших требований. Если бы IPet достаточно прост, я предпочел бы реализовывать это. Иначе, если PetBase реализует тонну функциональности, Вы не хотите копировать, затем имеете в нем.
оборотная сторона к реализации базового класса является требованием к override
(или new
) существующие методы. Это делает их виртуальными методами, что означает, что необходимо быть осторожны относительно того, как Вы используете экземпляр объекта.
Наконец, единичное наследование.NET уничтожает меня. Наивный пример: Скажите создание пользовательского элемента управления таким образом, Вы наследовались UserControl
. Но, теперь Вы заблокированы из также наследования PetBase
. Это вынуждает Вас реорганизовать, например, для создания PetBase
участник класса, вместо этого.
Проверьте IsAssignableFrom http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx