MVVM的Resharper警告

当我用WPF实现MVVM模式时,我发现Resharper经常警告我某些属性从未在我的ViewModel中使用过。 问题是它们正在被使用,但只能由数据绑定系统使用。 有没有其他人遇到过这种烦恼,有没有办法帮助Resharper意识到这些属性确实被使用了? 至少,我很高兴VS 2010正确地认识到[Import]标记的成员不会“永远为空”,但希望我也能解决这个问题。

您可以使用外部注释向Resharper指示使用该方法,因此不会警告您。 在这里看到Resharper文档

你需要用[UsedImplicitlyAttribute]装饰任何这样的方法

在使用该属性之前,您会看到:

在此处输入图像描述

然后在应用属性后:

 [UsedImplicitly(ImplicitUseTargetFlags.WithMembers)] class NotUsed { public int Field1 { get; set; } public int Field2 { get; set; } } 

使用

  

它坚持视图模型。 在View中,您可以看到模型属性,反之亦然 – 应该使用模型属性。

您可以尝试两种不同的选择。 一种是将Resharper检查的严重程度降低到“提示”。 另一个选项是使用“抑制检查和注释”项目Resharper为生成您知道正在使用的警告的属性提供。 就个人而言,我会将严重性降低到“提示”。

一个粗略的解决方法是完全禁用警告:

在Resharper> Options> Code Inspection> Inspection Severity下,将此项目的警告级别设置为“Do not show”。

这显然不是理想的,但这取决于你对误报的烦恼程度。

这是因为XAML绑定的弱类型特性。

为了使ReSharper能够从XAML视图中解析您使用的VM的哪些属性,您需要在标记中为{Binding}引入数据上下文类型注释。 有关详细信息,请参阅此博客文章中的“绑定帮助”部分。 当ReSharper知道数据上下文类型时,您将获得正确的使用分析,导航和重构支持。

ReSharper还了解OneWay / OneWayToSource / TwoWay绑定模式,并分别标记属性getter / setter /两个访问器。

这些房产是公共的还是内部的? 根据我的经验,ReSharper并没有警告耻骨(因为它无法判断成员是否在外部使用)但它会警告内部成员,因为它们只能在该组件中使用(尽管InternalsVisibleTo尽管)