L'extrait de code ne compilerait pas que cela signifiait seulement pour mettre en valeur ce que je voudrais obtenir: Dire que j'ai une interface:Quel est le meilleur modèle OOP pour faire en C#
public Interface IWalker
{
//Compiles but not what I need
double DistanceTravelled {get; set;}
//Compiler error - cant be private for set, but that's what I need
//double DistanceTravelled {get; private set;}
}
public abstract AbstractWalker : IWalker
{
//Error:Cannot implement - but thats what I need
//protected double DistanceTravelled {get; private set}
//Error the set is not public and I dont want the property to be public
//public double DistanceTravelled { get;private set; }
//Compiles but not what i need at all since I want a protected
// property -a. and have it behave as readonly - b. but
// need it to be a part of the interface -c.
public double DistanceTravlled {get; set;}
}
Tout mon béton Les instances de AbstractWalker sont en fait de type IWalker. Quel serait le meilleur moyen d'obtenir le design que j'ai spécifié dans l'extrait?
Y a-t-il une raison pour que ce soit une interface? Les classes abstraites sont fondamentalement la même chose, sauf que vous pouvez ajouter des méthodes protégées. –
trouvé cela, peut-être que cela aide? http://stackoverflow.com/questions/2420133/do-adding-properties-to-an-interface-prevent-creating-private-protected-set/2420147#2420147 – Ozzy
@Mike, oui, donc j'ai le choix programmer contre l'un ou l'autre. – dexter