代码之家  ›  专栏  ›  技术社区  ›  Dan Bryant

MVVM的重拾器警告

  •  26
  • Dan Bryant  · 技术社区  · 14 年前

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

    6 回复  |  直到 4 年前
        1
  •  30
  •   Pang firemonkey    4 年前

    您可以使用外部注释来指示使用的方法,从而不向您发出警告。看到那上面的ReSharper文档了吗 here .

    你需要用这些方法来装饰 [UsedImplicitlyAttribute] .

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

    enter image description here

    [UsedImplicitly(ImplicitUseTargetFlags.WithMembers)]
    class NotUsed
    {
        public int Field1 { get; set; }
        public int Field2 { get; set; }
    }
    
        2
  •  16
  •   Adrian Botor    12 年前

    使用

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

    这是模型的视图。 在视图中,您可以看到模型属性,反之亦然-应该使用模型中的属性。

        3
  •  6
  •   Pang firemonkey    4 年前

    • 选项1:将ReSharper检查的严重性降低为“提示”。

    就我个人而言,我倾向于将严重性降低到“提示”。

        4
  •  2
  •   Pang firemonkey    4 年前

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

    在ReSharper下>选项>代码检查>检查严重性,将此项的警告级别设置为“不显示”。

    这显然不理想,但这取决于你对假阳性的烦恼程度。

        5
  •  2
  •   Pang firemonkey    4 年前

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

    {Binding} 在标记中。请参阅中的“绑定帮助”部分 this blog post

    ReSharper也知道 OneWay / OneWayToSource / TwoWay 绑定模式并将属性getter/setter/both访问器分别标记为已使用。

        6
  •  0
  •   Pang firemonkey    4 年前

    物业是公共的还是内部的?根据我的经验,ReSharper不会对public发出警告(因为它无法判断成员是否在外部使用),但会对内部成员发出警告,因为它们只能在该程序集中使用(尽管有InternalsVisibleTo)。