Интерфейс или абстрактный класс?

Для моего нового 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 следует использовать одинаково. Для этого я мог пойти двумя путями:

Create an interface: IObject Create an abstract class: ObjectBase

Я решил пойти по пути интерфейса, который я позже в коде не должен писатьObjectBase каждый раз, ноIObject просто для удобства - но каковы другие плюсы для этого пути?

И во-вторых, как насчет добавленияIXmlSerializable на всю историю? Пусть интерфейс наследуется отIXmlSerializable или у него есть больше плюсов для реализацииIXmlSerializable в абстрактном базовом классе?

Ответы на вопрос(15)

Ваш ответ на вопрос