Interface ou classe abstrata?
Para o meu novo Pet-Project eu tenho uma pergunta para o design, que já está decidida, mas eu quero algumas outras opiniões sobre isso também.
Eu tenho duas classes (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;}
}
Mais tarde no projetoMyObjectGroup
eMyObject
deve ser usado igualmente. Para isso eu poderia ir de duas maneiras:
IObject
Crie uma classe abstrata:ObjectBase
Eu decidi ir pelo caminho da interface, que depois no código não devo escreverObjectBase
toda vez, masIObject
apenas por facilidade - mas quais são os outros aspectos positivos para este caminho?
E segundo, que tal adicionarIXmlSerializable
para toda a história? Deixe a interface herdar deIXmlSerializable
ou tem mais pontos positivos para implementarIXmlSerializable
na classe base abstrata?