gpt4 book ai didi

c# - 避免 "Non-constant fields should not be visible"代码分析警告

转载 作者:行者123 更新时间:2023-12-05 08:44:15 25 4
gpt4 key购买 nike

我有一个对象,其中包含验证对象时检查的业务规则列表。

在类的顶部,我创建了 BusinessRule 类型的静态字段,如下所示:-

public class SyncFile : Waterstons.Patterns.Entities.BaseEntity<Guid>
{
public static BusinessRule NameRequiredRule = new BusinessRule("Name", "The audit file must have a name");
....


protected override void Validate()
{
if (Id == default(Guid))
{
AddBrokenRule(IdRequiredRule);
}
....

这导致代码分析提示我不应该拥有公共(public)字段,除非它们是常量。我不确定我是否可以将它们定义为 const 但是基于我如何使用它们。

那么有没有更好的方法来解决这个问题?我应该改为将它们公开为以下属性吗?

    public static BusinessRule _nameRequiredRule = new BusinessRule("Name", "The audit file must have a name");
public static BusinessRule Test
{
get { return _nameRequiredRule; }
}

或者有更好的方法来解决这个问题吗?

最佳答案

你可以把你的静态字段声明改成这样

 public static readonly BusinessRule NameRequiredRule = new BusinessRule("Name", "The audit file must have a name");

因此要确保公共(public)字段在执行期间不会改变。还要注意使 BusinessRule 类不可变,这样不仅不能在 NameRequiredRule 中更改引用,而且实例内容也不能在运行时更改。

如果您不能强制执行不变性 - 考虑将 NameRequiredRule 静态字段声明为私有(private)并创建一个静态属性。

private static BusinessRule _nameRequiredRule = new BusinessRule("Name", "The audit file must have a name");
public static BusinessRule NameRequiredRule
{
get { return _nameRequiredRule; }
}

关于c# - 避免 "Non-constant fields should not be visible"代码分析警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14355864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com