當我使用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