Résumé de la propriété publique de lecture, de définir privé setter dans la classe de béton possible?

Je suis en train de créer une classe abstraite qui définit une propriété avec un getter. Je veux laisser aux classes dérivées de décider si elles veulent mettre en œuvre un setter de la propriété ou non. Est-ce possible?

Ce que j'ai à ce jour:

public abstract class AbstractClass {
    public abstract string Value { get; }
    public void DoSomething() {
        Console.WriteLine(Value);
    }
}

public class ConcreteClass1 : AbstractClass {
    public override string Value { get; set; }
}

public class ConcreteClass2 : AbstractClass {
    private string _value;
    public override string Value {
        get { return _value; }
    }
    public string Value {
        set { _value = value; }
    }
}

public class ConcreteClass3 : AbstractClass {
    private string _value;
    public override string Value {
        get { return _value; }
    }
    public void set_Value(string value) {
        _value = value;
    }
}

Dans ConcreteClass1, j'obtiens une erreur sur le set. Il ne peut pas remplacer set_Value car pas substituables accesseur set existe en AbstractClass.

Dans ConcreteClass2, j'obtiens une erreur sur les deux Value's car un membre avec le même nom est déjà déclaré.

ConcreteClass3 ne donne pas une erreur, mais même si la Valeur de l'accesseur set seraient rassemblés dans set_Value, il ne fonctionne pas dans l'autre sens. La définition d'un set_Value ne signifie pas que Value obtient un accesseur set. Donc je ne peut pas affecter une valeur à une ConcreteClass3.La valeur de la propriété. Je peut utilisation ConcreteClass3.set_Value("valeur"), mais ce n'est pas ce que je suis en train de réaliser ici.

Est-il possible d'avoir la classe abstraite de la demande d'un public de lecture, tout en permettant à l'option d'un setter pour être définie dans une classe dérivée?

Dans le cas où vous r'vous demandez-vous, c'est juste une question théorique. Je n'ai pas une situation réelle où quelque chose comme cela est nécessaire. Mais je ne peux imaginer une classe abstraite qui ne se soucie pas de la façon dont une propriété est défini, mais qui ne doivent être en mesure d'obtenir la propriété.

InformationsquelleAutor comecme | 2011-01-10