代码检查:自动属性可以设为仅 get(非私有访问权限)
从 C# 6.0 开始,您可以定义仅可读的自动属性,这些属性(类似于 readonly 字段 )只能通过构造函数或初始化器进行初始化。 JetBrains Rider 会检测并帮助您移除在构造函数/初始化器中初始化且没有写入用法的自动属性上多余的 集合 访问器。
在下面的示例中,意图是创建一个不可变类,一旦 名称 属性的值在构造函数中检查了可空性,就可以安全地使用它而无需进一步的空检查。 然而,私有 setter 并不能保证该属性不会在私有成员中被更改。 因此,将此属性设为仅 get 是一个防止任何修改的好主意。
要使解决方案范围的检查生效,您需要启用以下至少一项功能:
简化的全局使用检查:在 JetBrains Rider 设置 的 页面上选择 在关闭全局范围分析时显示未使用的非私有类型成员 Ctrl+Alt+S。
解决方案范围分析 :在 JetBrains Rider 设置 的 页面上选择 启用解决方案级分析(_A) Ctrl+Alt+S。
请注意,即使报告的属性 setter 在您的解决方案中没有直接用法,也可能存在间接使用的情况——例如,通过反射——或者它可能只是设计为公共 API。 在所有这些情况下,您可能希望通过以下方式之一 抑制属性 setter 的使用检查:
推荐的方法是使用 代码注解属性装饰隐式使用的属性 setter。 为此有两个属性: [UsedImplicitly] 和 [PublicAPI] ,它们在功能上相似,但可以让您和您的团队成员了解属性 setter 的实际使用方式。
您还可以使用任何自定义属性来抑制使用检查。 为此,请使用 [MeansImplicitUse]属性标记该属性的定义。
最后,您可以像处理任何其他代码检查一样,通过 抑制注释或抑制属性来抑制特定的使用检查。