2010-12-10 2 views
1

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

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

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

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

Может ли кто-нибудь указать мне правильное направление? Благодаря!!!

+0

Редактирование Джеффа Этвуда и ответ Джона Скита. Доказательное освещение может ударить дважды в одном месте. –

ответ

3

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

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

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

+0

круто, я получил ответ от Джона Скита ... – Kenn

Смежные вопросы