Ne peut pas se substituer à la propriété est protégée ensemble
J'ai suivantes de la classe de base:
abstract class Base
{
public abstract object Var
{
get;
protected set;
}
}
Et cette classe dérivée:
class Derived : Base
{
public override object Var
{
get {//code here
}
set {//code here -- I get error here!
}
}
}
Mais j'obtiens cette erreur:
Ne peut pas changer de modificateur d'accès lors de la substitution "protégés" membre hérité 'Var'
J'ai essayé d'ajouter un protected
et private
mots-clés avant, mais cela n'a pas aidé. Comment puis-je résoudre ce problème?
Mise à JOUR:
La classe de base doit assurez-vous que les sous-classes de fournir une valeur pour Var
au moment de la création. J'ai donc besoin d'avoir le setter déclaré dans la classe de Base.
Sinon, je pourrais déclarer une variable membre privée pour ce faire, et de supprimer le setter, mais ce n'est pas une option comme discuté ici.
OriginalL'auteur atoMerz | 2011-12-31
Vous devez vous connecter pour publier un commentaire.
Le problème est que le
set
dans votre classe dérivée de apublic
visiblity—puisque vous n'avez pas spécifiéprotected
explicitement. Puisque cette propriété est définie, a protégé la visibilité dans votre classe de base, vous obtenez l'erreurVous pouvez résoudre le problème en donnant à l'ensemble protégé de la visibilité dans votre classe dérivée:
Je accepter la meilleure réponse et de progresser. Depuis que la question a upvoted réponses, vous aurez besoin d'un mod pour le retirer. N'en vaut pas la peine pour quelqu'un.
OriginalL'auteur Adam Rackis