c # вопрос о свойствах из базового класса - PullRequest
1 голос
/ 10 декабря 2010

Кажется, я должен это знать, и я думал, что знаю.У меня есть базовый класс модели представления, в нем у меня есть несколько свойств, но все они используют автоматические методы получения и установки, так что, конечно, все они работают нормально, но у меня есть один, который должен транслировать событие (я использую призму), чтобы он выгляделкак это.

protected bool isValid;
public bool IsValid
{
  get { return isValid; }
  set
  {
    isValid = true;
    this.EventAggregator.GetEvent<ViewModelValidEvent>().Publish(isValid);
  }
}

Проблема, которую я получаю, заключается в том, что я пытаюсь назначить IsValid в классе, производном от него - ошибка компилятора говорит, что он только для чтения ... Я подумал, что мне нужно сделать защищеннымисправить это не удалось.

Более того - я продолжаю объявлять эти закрытые переменные для всего, когда мне нужно, чтобы установщик вызвал RaisePropertyChanged или что-то еще ... Есть ли лучший способ сделать это?

Кто-нибудь может указать мне правильное направление?Спасибо !!!

1 Ответ

3 голосов
/ 10 декабря 2010

Я подозреваю, что вы пытаетесь использовать isValid для объекта, который не известен (компилятором) как экземпляр производного класса или подкласс производного класса.protected имеет относительно тонкую семантику, подобную этой.

Лично я бы посоветовал вам сохранить ваши поля закрытыми и использовать свойства любого другого класса - даже производного класса.

Что касаетсяболее простой способ реализации свойств - я не думаю, что есть один на самом деле, нет.У вас может быть тип оболочки, но вам все равно нужно создать переменную для хранения экземпляра типа оболочки и методы доступа get / set для прокси для этой переменной.

...