Schnittstelle oder abstrakte Klasse?

Für mein neues Pet-Projekt habe ich eine Frage zum Design, die bereits entschieden ist, aber ich möchte auch einige andere Meinungen dazu.

Ich habe zwei Klassen (vereinfacht):

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

Später im ProjektMyObjectGroup undMyObject sollte gleichermaßen verwendet werden. Dafür könnte ich zwei Wege gehen:

Erstellen Sie eine Schnittstelle:IObjectErstellen Sie eine abstrakte Klasse:ObjectBase

Ich entschied mich für den Weg der Schnittstelle, die ich später im Code nicht schreiben darfObjectBase jedes mal aberIObject Nur zur Erleichterung - aber was sind andere Vorteile für diesen Weg?

Und zweitens, was ist mit dem Hinzufügen?IXmlSerializable zur ganzen Geschichte? Lassen Sie die Schnittstelle von erbenIXmlSerializable oder hat es mehr positive umzusetzenIXmlSerializable in der abstrakten Basisklasse?

Antworten auf die Frage(15)

Ihre Antwort auf die Frage