代码之家  ›  专栏  ›  技术社区  ›  JYelton Melchior Blausand

如何解决Resharper仅针对显示/值成员的属性的“unused property”警告?

  •  13
  • JYelton Melchior Blausand  · 技术社区  · 14 年前

    我已经为一个对象定义了两个属性,“Name”和“ID”,这个对象用于BindingList数据源的组合框的DisplayMember和ValueMember。

    ReSharper 去评估它。ReSharper警告我这两个属性没有使用。

    BindingList<ClassSample> SampleList = new BindingList<ClassSample>();
    // populate SampleList
    cmbSampleSelector.DisplayMember = "Name";
    cmdSampleSelector.ValueMember = "ID";
    cmbSampleSelector.DataSource = SampleList;
    
    private class ClassSample
    {
        private string _name;
        private string _id;
    
        public string Name // ReSharper believes this property is unused
        {
            get { return _name; }
        }
    
        public string ID // ReSharper believes this property is unused
        {
            get {return _id; }
        }
    
        public ClassSample(string Name, string ID)
        {
            _name = Name;
            _id = ID;
        }
    }
    

    是我做错了什么,还是ReSharper对这个特殊用法一无所知?

    6 回复  |  直到 3 年前
        1
  •  17
  •   Pang Mohammad Imran    3 年前

    UsedImplicitly attribute . ReSharper现在将假定这些属性是通过反射或后期绑定或其他方式使用的。

        2
  •  3
  •   StuartLC    9 年前

    为了补充大卫的答案,在resharper8.x和更高版本中,添加 Resharper.ExternalAnnotations visualstudio中Resharper的插件 (Resharper -> Extension Manager) .

    unused property Used Implicitly ,这将用一个 UsedImplicitlyAttribute

    Resharper UsedImplicitly

    然后可以直接添加对 JetBrains.Annotations.dll 在您的项目中,也可以选择让Resharper添加一个小的 Annotations.cs Attribute 定义(以及其他类似 NotNullAttribute 注释.cs Properties 解决方案文件夹中的图标。

    Adding Resharper Annotations.cs to your project

    作为旁白,如果能够添加一个 Description 属性,例如。 [UsedImplicitly(Description="Used by NUnit Theory / Reflected by Xyz, etc")] ,所以在此期间我们需要发表评论。

        3
  •  3
  •   Pang Mohammad Imran    3 年前

    不过,您可以简单地抑制警告。只需点击属性名称并点击 + 输入 ,然后选择抑制警告的选项。这将添加一个 // ReSharper disable

        4
  •  1
  •   Pang Mohammad Imran    3 年前

    当通过反射使用东西时(我想在您的例子中框架就是这样做的),ReSharper无法判断(至少在它当前的形式下)。

        5
  •  0
  •   Pang Mohammad Imran    3 年前

    我确实使用了ReSharper机制来注释我还需要的特定实例的检查,使用ReSharper的这个过程:

    Using ReSharper menu to disable warning once

        6
  •  0
  •   Pang Mohammad Imran    3 年前

    要安装ReSharper批注,请执行以下操作:

    PM> Install-Package JetBrains.Annotations
    

    然后可以通过键入 [UsedImplicitly] 或者使用上下文菜单( screenshot

    代码示例:

    using JetBrains.Annotations;
    class ClassSample
    {
        private string _name;
        private string _id;
    
        [UsedImplicitly]
        public string Name // ReSharper believes this property is unused
        {
            get { return _name; }
        }
    
        [UsedImplicitly]
        public string ID // ReSharper believes this property is unused
        {
            get { return _id; }
        }
    
        public ClassSample(string Name, string ID)
        {
            _name = Name;
            _id = ID;
        }
    }