Переопределяемые методы в конструкторах с InitMembers () - PullRequest
1 голос
/ 21 июля 2009

Я перенес метод здесь почти на все области, где у меня были переопределенные методы и мне удалось их исправить, но есть одна часть, где метод не работает одинаково в другом контексте кусок кода:

    public Employee()
    {
        this.InitMembers();
    }

    private void InitMembers()
    {
        // Init the collection so it's never null
        this.Territories = new List<Territory>();
    }
    public Employee(string firstName, string lastName): this()
    {
        this.reffirstName = firstName;
        this.reflastName = lastName;
    }
>   public virtual IList<Territory> Territories { get; protected set; }

Там, где снова> является кодом, вызывающим ошибку, я, однако, получаю опцию intellisense «Преобразовать в автоматическое свойство», которая просто возвращает код к тому моменту, когда он был запущен, и не устраняет проблему. Кто-нибудь знает, какие изменения необходимо внести в эту часть, чтобы устранить нарушение fxcop?

1 Ответ

0 голосов
/ 13 сентября 2009

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

В приведенном вами примере InitMembers использует this.Territories, что вызывает нарушение. Согласно вашему последующему комментарию вы добавили частного участника - используйте его вместо этого.

...