Абстрактная собственность с публичным Getter, определите частный сеттер в конкретном классе?C#

Место общения программистов C#
Ответить
Anonymous
 Абстрактная собственность с публичным Getter, определите частный сеттер в конкретном классе?

Сообщение Anonymous »

Я пытаюсь создать абстрактный класс, который определяет свойство с Getter. Я хочу оставить это до полученных классов, чтобы решить, хотят ли они реализовать сеттер для собственности или нет. Это возможно?

Код: Выделить всё

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;
}
}
В ConceteClass1 я получаю ошибку на Set . Он не может переопределить set_value , потому что нет переопределяемого наборочного доступа в AbstractClass.

in conceteClass2 , я получаю ошибку на обоих значения , потому что участник с тем же именем уже объявлен. < /p>

Код: Выделить всё

ConcreteClass3
не дает ошибки, но, хотя набор Value's Set Accessor был бы скомпилирован в set_value, он не работает наоборот. Определение set_value не означает, что значение получает комплекс Set. Поэтому я не могу назначить значение свойству ConcreteClass3.value. Я могу < /em> использовать ConceteClass3.set_value ("value"), но это не то, чего я пытаюсь достичь здесь. < /P>

возможно ли это. Потребовались ли абстрактный класс публичный получение, позволяя определить дополнительного сеттера в полученном классе? теоретический вопрос. У меня нет реальной ситуации, когда что -то подобное нужно. Но я могу представить себе абстрактный класс, который не заботится о том, как устанавливается свойство, но это должно иметь возможность получить свойство.

Подробнее здесь: https://stackoverflow.com/questions/464 ... e-class-po
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»