2014-10-06 6 views
-2

Я сужусь по завершении специализированного синтаксического анализа и управления классами и столкнулся с проблемой, которую я не могу понять.Почему конструктор не устанавливает параметр?

У меня есть класс активности с именем RecordDisposal и класс данных с именем DisposalRecord (извините за бедные имена, я не мог придумать что-нибудь еще, что бы не путало дело с другими вещами).

Итак, я установил некоторые базовые тесты, и на самом деле все не работает (см. Изображение). В точке останова поле UnparsedRetentionCode должно быть установлено на значение параметра RetentionCode (см. Строку выше точки останова), которая в этом случае равна 1, но это не (см. Окно «Локали» внизу).

Что я сделал не так?

enter image description here

+1

Пожалуйста, не используйте изображения кода в сообщениях. Отправьте фактический код и полную ошибку, которую вы получаете. – paqogomez

+0

Я согласен с тем, что он должен был поместить свой код в текст, но образ окна отладки местных жителей был полезен. –

+1

также вы можете прочитать и/или настроить способ установки свойств и посмотреть, как реализовать автоматические свойства – MethodMan

ответ

6

UnparsedRetentionCode является нулевым в окне просмотра, потому что ваш сеттер эффективно выполняет _fullRetentionCode = _fullRetentionCode (который при создании объекта является нулевым).

Оно должно быть:

private set 
{ 
    _fullRetentionCode = value; 
} 

MSDN reference on c# properties

1

Ваш сеттер установки поля подложки; к значению поля поддержки (через свойство getter). Таким образом, он всегда равен нулю.

Вместо:

public string UnparsedRetentionCode 
{ 
    get { return _fullRetentionCode; } 
    private set { _fullRetentionCode = value; } 
} 

Так назначение на самом деле работает;

+0

@EricJ. Просто заметил и исправился. Благодаря! – BradleyDotNET

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