Решарпер Предупреждения с MVVM - PullRequest
26 голосов
/ 07 мая 2010

Когда я реализую шаблон MVVM с WPF, я обнаружил, что Resharper часто предупреждает меня о том, что определенные свойства никогда не используются в моих ViewModels. Проблема в том, что они используются, но только системой привязки данных. Кто-нибудь еще сталкивался с этим раздражением, и есть ли способ помочь Решарперу осознать, что эти свойства действительно используются? По крайней мере, я рад, что VS 2010 правильно понимает, что тегированные элементы [Import] не всегда будут «нулевыми», но, надеюсь, я тоже смогу решить эту проблему.

Ответы [ 6 ]

25 голосов
/ 31 января 2011

Вы можете использовать Внешние аннотации, чтобы указать Resharper, какой метод используется, и, таким образом, не предупредить вас.см. документацию Resharper по этому здесь

Вам необходимо украсить любые такие методы с помощью [UsedImplicitlyAttribute]

Перед использованием атрибута, который вы видите:

enter image description here

и затем после применения атрибута:

[UsedImplicitly(ImplicitUseTargetFlags.WithMembers)]
class NotUsed
{
    public int Field1 { get; set; }
    public int Field2 { get; set; }
}
15 голосов
/ 14 августа 2012

Использовать

<UserControl
...
xmlns:vm="clr-namespace:YourProject.ViewModels" mc:Ignorable="d"
d:DataContext="{d:DesignInstance vm:SomeClassViewModel}">

Это придерживаться взгляда на модель.В представлении вы можете увидеть свойства модели и наоборот - в свойствах модели следует использовать.

4 голосов
/ 07 мая 2010

Вы можете попробовать два разных варианта. Одним из них является снижение строгости проверки Резарпера до «Подсказки». Другой вариант - использовать элемент «Подавить проверку с комментарием», Resharper предоставляет свойства, которые генерируют предупреждение, которое, как вы знаете, используется. Лично я бы пошёл с уменьшением серьезности до «Подсказки».

2 голосов
/ 14 ноября 2012

Это из-за слабо типизированной природы привязок XAML.

Чтобы ReSharper мог определять, какие свойства виртуальной машины вы используете из представления XAML, вам необходимо ввести аннотации типов контекста данных для {Binding} s в разметке. Подробнее см. Раздел «Помощь при связывании» в этого сообщения в блоге . Вы получите правильный анализ использования, поддержку навигации и рефакторинга, когда ReSharper узнает тип контекста данных.

ReSharper также знает о OneWay / OneWayToSource / TwoWay режимах привязки и помечает свойства getter / setters / обоих методов доступа как используемые соответственно.

2 голосов
/ 07 мая 2010

Необработанный обходной путь - отключить предупреждение вообще:

В Resharper> Параметры> Проверка кода> Уровень проверки установите для этого элемента уровень предупреждения «Не показывать».

Это явно не идеально, но это зависит от вашего уровня раздражения от ложных срабатываний.

0 голосов
/ 09 мая 2010

Является ли недвижимость общедоступной или внутренней? По моему опыту, ReSharper не предупреждает об общедоступных (так как он никак не может сказать, что элементы не используются извне), но он будет предупреждать о внутренних членах, поскольку они могут использоваться только в этой сборке (несмотря на InternalsVisibleTo) 1001 *

...