当我使用WPF实现MVVM模式时,我发现Resharper经常警告我某些属性从未在我的ViewModel中使用过。问题在于它们正在被使用,但只能通过数据绑定系统。是否有其他人遇到过这种烦恼,有没有办法帮助Resharper意识到这些属性确实正在被使用?至少,我很高兴VS 2010能正确认识到[Import]标记的成员不会“永远是空的”,但希望我能解决这个问题。MVVM的Resharper警告
回答
您可以使用外部注释向Resharper指示使用的方法,因此不会警告您。查看该here
ReSharper的文档你需要装饰的任何这样的方法与[UsedImplicitlyAttribute]
使用属性之前,您会看到:
,然后应用属性之后:
[UsedImplicitly(ImplicitUseTargetFlags.WithMembers)]
class NotUsed
{
public int Field1 { get; set; }
public int Field2 { get; set; }
}
粗的解决方法是完全禁用警告:
在ReSharper的>选项>代码检查>检查严重程度,设置此项目为“不显示”的警告级别。
这显然不理想,但这取决于您的误报程度和误报。
您可以尝试两种不同的选项。一种是将Resharper检查的严重性降低到“提示”。另一种选择是使用“抑制带注释的检查”项目Resharper提供的属性会生成您正在使用的警告。就个人而言,我会尽量减轻严重程度以“提示”。
现在,将提示级别降低到足够好。我很困扰地看到我的课程右边没有解决橙线问题。 – 2010-05-07 20:29:04
该属性是公开的还是内部的?根据我的经验,ReSharper并没有警告公众(因为它无法告诉成员没有被外部使用),但它会警告内部成员,因为他们只能在该程序集中使用(InternalsVisibleTo,尽管如此)
他们是公开的,我可以将设置更改为仅提供公共属性的提示。我仍然会看到私人/内部属性的警告,这很好。该警告在解决方案范围分析的上下文中显示为“自动实施的属性访问器从不使用”。 – 2010-05-09 17:59:56
使用
<UserControl
...
xmlns:vm="clr-namespace:YourProject.ViewModels" mc:Ignorable="d"
d:DataContext="{d:DesignInstance vm:SomeClassViewModel}">
它坚持查看模型。 在视图中,您可以看到模型属性,反之亦然 - 应该使用模型属性。
当视图模型通过像许多MVVM框架中的x:Name属性自动魔术般地绑定到视图时,这没有帮助。 – Nathan 2012-10-03 15:28:06
这对我来说似乎是最好的解决方案。 – 2012-11-16 13:27:55
这是因为XAML绑定的弱类型性质。
要让ReSharper能够解析您在XAML视图中使用的VM的属性,您需要为标记中的{Binding}
s引入数据上下文类型注释。有关详细信息,请参阅this blog post中的“装订帮助”部分。当ReSharper知道数据上下文类型时,您将得到正确的使用分析,导航和重构支持。
ReSharper的也知道OneWay
/OneWayToSource
/TwoWay
绑定模式和分别用于将属性getter/setter方法/两个访问。
- 1. Resharper警告窗口
- 2. ReSharper(false?)JavaScript警告
- 3. Resharper警告仍显示UsedImplicitlyAttribute
- 4. 错误的Resharper多枚举警告?
- 5. ReSharper的警告有关JavaScript函数
- 6. 可空类型和ReSharper的警告
- 7. 奇怪ReSharper的警告上MemberInfo.DeclaringType
- 8. 作为Visualstudio错误的Resharper警告
- 9. ReSharper的:Visual Studio中:警告使用VAR
- 10. ReSharper的警告 - 访问修改关闭
- 11. 在Resharper中创建自己的警告?
- 12. Resharper可能的空引用警告
- 13. 禁用所有Resharper警告和注释
- 14. async方法是否正确? Resharper警告
- 15. ReSharper是否会警告字典密钥?
- 16. Resharper警告将枚举枚举为UIntPtr,但没有编译器警告
- 17. 对构造函数的JavaScript命名约定的ReSharper警告
- 18. Resharper中的警告“不使用纯方法的返回值”
- 19. 如何使用Resharper修复所有类似的警告?
- 20. 如何配置ReSharper的警告有关返回void
- 21. 防止resharper“可能的空引用异常”警告
- 22. 避免Resharper <location> web.config MVC和WebAPI的警告
- 23. 如何更改Resharper栏中的颜色错误/警告/建议
- 24. 为什么Resharper在这种情况下显示System.NullReferenceException警告?
- 25. 如何在使用LINQ和ReSharper时摆脱“Possible System.NullReferenceException”警告?
- 26. 我可以将ReSharper TODO转换为编译器警告吗?
- 27. resharper警告代码启发式无法访问
- 28. 最佳实践:resharper警告 - 是否应该全部解决?
- 29. Resharper自定义搜索模式来警告IDisposable对象
- 30. Resharper:在C#7.0功能上启用警告?
谢谢,这是非常有用的信息。 – 2011-01-31 17:34:26
还有一种方法可以将此属性应用于例如接口的所有成员?我尝试了ImplicituseTargetFlags,但没有成功。 – Matthias 2011-11-22 17:21:53
@ Matthias Koch这对我使用'ImplicitUseTargetFlags.WithMembers' - 请参阅上面我提供的屏幕截图的更新回答。 – wal 2011-11-22 22:40:31