J'ai une classe abstraite avec une propriété abstraite définie pour avoir à la fois Get et Set. Je sais que je vais toujours vouloir obtenir cette propriété à partir de classes dérivées, mais il y a des cas où il n'a pas de sens à cette propriété dans certains types de classes dérivées.Accessibilité des propriétés abstraites
Je ne peux pas omettre l'accesseur Set dans une classe dérivée (voir l'exemple de code ci-dessous). Je pourrais remplacer l'accesseur set dans une classe dérivée pour ne rien faire avec les valeurs passées par l'utilisateur. Mais y a-t-il une autre façon de rendre la propriété dans une classe dérivée spécifique en lecture seule? En fin de compte, j'affiche ces propriétés dans une grille de propriétés et je ne veux pas que l'utilisateur entre des valeurs dans un champ qui ne fera rien. Peut-être que j'attribue simplement la propriété en lecture seule dans des classes dérivées spécifiques? En outre, je préfère vraiment ne pas jouer avec n'importe quel descripteur de type pour que les propriétés s'affichent correctement dans une grille de propriétés, par exemple en surchargeant ICustomTypeDescriptor.
public abstract class MyClass
{
public abstract string MyProperty
{
get;
set;
}
}
public abstract class MyDerivedClass
{
public override string MyProperty
{
//VS complains that the Set accessor is missing
get;
}
}
Je me demandais ... Est-ce qu'une propriété est vraiment abstraite si vous définissez une méthode get/set pour cela? Ou seraient-ils des méthodes get/set abstraites? –
Odd. J'ai simplement copié vos classes, ajouté un attribut hérité au second pour hériter le premier, et j'ai pu construire sans problème. –