¿Interfaz o clase abstracta?

Para mi nuevo Pet-Project tengo una pregunta para el diseño, eso ya está decidido, pero también quiero algunas otras opiniones al respecto.

Tengo dos clases (simplificadas):

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;}
}

Mas tarde en el proyectoMyObjectGroup yMyObject debe ser utilizado por igual. Para esto podría ir de dos maneras:

Crear una interfaz:IObjectCrear una clase abstracta:ObjectBase

Decidí seguir el camino de la interfaz, que luego en código no debo escribirObjectBase cada vez peroIObject Sólo por facilidad, pero ¿cuáles son otros aspectos positivos de esta manera?

Y segundo, ¿qué hay de añadirIXmlSerializable a toda la historia? Deje que la interfaz herede deIXmlSerializable o tiene más aspectos positivos para implementarIXmlSerializable en la clase base abstracta?

Respuestas a la pregunta(15)

Su respuesta a la pregunta