Предупреждение FXCop CA1801: «Параметр никогда не используется ...» в переопределенном унаследованном подавленном свойстве - PullRequest
2 голосов
/ 06 августа 2010

В продолжающейся миссии по очистке кодовой базы, которую я унаследовал, с помощью stylecop и fxcop, и одно из предупреждений от fxcop было CA1801: параметр 'value' Something.MyProperty.set (string) никогда не используется. Удалите параметр или используйте его в теле метода.

Код, на который он жалуется:

public class Something : ISomeInterface
    public new string MyProperty
    {
        get
        {
            throw new InvalidOperationException("MyProperty is not implemented.");
        }

        set
        {
            throw new InvalidOperationException("MyProperty is not implemented.");
        }
    }

Это свойство определено в интерфейсе, но в этом случае оно не требуется в производном классе - кроме слегка сомнительного использования InvalidOperationException вместо NotImplementedException, которое, как я считаю, является распространенным, мне интересно, следует ли мне просто исключить предупреждение в FXCop с примечанием, объясняющим почему?

Я не вижу, что еще я мог бы сделать с точки зрения наилучшей практики, чтобы предотвратить предупреждение в FXCop, кроме рефакторинга этого конкретного свойства во второй интерфейс, а затем обновить все другие классы, которые используют этот интерфейс ? Думаю, я только что ответил на свой вопрос? : D

1 Ответ

2 голосов
/ 06 августа 2010

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

public class Something : ISomeInterface
    public string MyProperty

Кстати, я рекомендую использовать NotImplementedException вместо InvalidOperationException.

...