Чтобы расширить ответ Пако:
В большинстве случаев это не больно. Но если класс наследуется, virtual позволяет переопределять свойства get / set, поэтому поведение больше не полностью инкапсулировано и не контролируется, поэтому теоретически оно может нарушаться. FxCop предупреждает об этом, потому что это потенциальная проблема.
Цель FxCop - помочь вам предупредить вас о возможных проблемах. Не является неправильным использование свойств в конструкторе, если вы знаете, кто / что когда-либо наследует от класса, но это официально не является «наилучшей практикой».
Итак, ответ в том, что это нормально, если вы контролируете любое наследование класса. В противном случае, не используйте его и установите значения полей напрямую. (Это означает, что вы не можете использовать C # 3.0 для автоматического получения / установки свойств - вам придется писать свойства, оборачивая поля самостоятельно.)
Примечание: лично все мои проекты являются веб-сайтами, которые мы размещаем для клиентов. Таким образом, если предположить, что эта настройка остается неизменной для проекта, то стоит компромисса с необходимостью дублировать различные проверки на нуль / аргументы. Но в любом другом случае, когда я не уверен, что мы сохраним полный контроль над проектом и использованием класса, я бы не стал использовать этот ярлык.