Интерфейс или абстрактный класс?
Для моего нового Pet-Project у меня есть вопрос по дизайну, который уже решен, но я хочу получить и другие мнения по этому поводу.
У меня есть два класса (упрощенно):
class MyObject
{
string name {get;set;}
enum relation {get;set;}
int value {get;set;}
}
class MyObjectGroup
{
string name {get;set;}
enum relation {get;set;}
int value {get;set;}
List<MyObject> myobjects {get;set;}
}
Позже в проектеMyObjectGroup
а такжеMyObject
следует использовать одинаково. Для этого я мог пойти двумя путями:
IObject
Create an abstract class: ObjectBase
Я решил пойти по пути интерфейса, который я позже в коде не должен писатьObjectBase
каждый раз, ноIObject
просто для удобства - но каковы другие плюсы для этого пути?
И во-вторых, как насчет добавленияIXmlSerializable
на всю историю?
Пусть интерфейс наследуется отIXmlSerializable
или у него есть больше плюсов для реализацииIXmlSerializable
в абстрактном базовом классе?