避免非只读静态字段规则
Avoid non-readonly static fields Rule
我正在使用 NDepend 审查我不久前写的一些代码,但我收到了这个警告
警告在以下片段中引用
private static char csvSeparator;
public static char CsvSeparator => csvSeparator != Char.MinValue
? csvSeparator
: (csvSeparator =
ServiceStack.ServiceStackHost.Instance.AppSettings.Get("csv_separator", ';'));
这段代码基于的想法是我在 app.config 中定义了一个分隔符,然后这个分隔符在整个应用程序生命周期内都是相同的。我的代码读取它,然后将其存储在一个静态变量中以供将来使用 use.This 应用程序是一个使用高频 CSV 文件创建的控制台,所以我不想每次都浪费时间从配置文件中读取它需要它
你能为我提供解决该警告的方法吗?
提前致谢
为避免任何问题,您应该确保静态字段 csvSeparator
字段仅由 [=19] 的 class 构造方法 分配=].这样,您不仅可以将字段设置为 readonly
,而且规则也不会再发出警告。
static YourClassName() {
// csvSeparator gets assigned
csvSeparator = csvSeparator != Char.MinValue
? csvSeparator
: (csvSeparator = ServiceStack.ServiceStackHost.Instance.AppSettings.Get("csv_separator", ';'));
}
private static readonly char csvSeparator;
public static char CsvSeparator => csvSeparator;
或者您也可以使用支持字段和自动 属性 getter
对不起,如果我不发表评论,但由于我需要粘贴代码,所以我不能发表评论...顺便说一句,这个解决方案也应该有效(而且我不需要私人道具)
public static readonly char CsvSeparator;
static Helper()
{
CsvSeparator = ServiceStack.ServiceStackHost.Instance.AppSettings.Get("csv_separator", ';');
}
我正在使用 NDepend 审查我不久前写的一些代码,但我收到了这个警告
警告在以下片段中引用
private static char csvSeparator;
public static char CsvSeparator => csvSeparator != Char.MinValue
? csvSeparator
: (csvSeparator =
ServiceStack.ServiceStackHost.Instance.AppSettings.Get("csv_separator", ';'));
这段代码基于的想法是我在 app.config 中定义了一个分隔符,然后这个分隔符在整个应用程序生命周期内都是相同的。我的代码读取它,然后将其存储在一个静态变量中以供将来使用 use.This 应用程序是一个使用高频 CSV 文件创建的控制台,所以我不想每次都浪费时间从配置文件中读取它需要它
你能为我提供解决该警告的方法吗? 提前致谢
为避免任何问题,您应该确保静态字段 csvSeparator
字段仅由 [=19] 的 class 构造方法 分配=].这样,您不仅可以将字段设置为 readonly
,而且规则也不会再发出警告。
static YourClassName() {
// csvSeparator gets assigned
csvSeparator = csvSeparator != Char.MinValue
? csvSeparator
: (csvSeparator = ServiceStack.ServiceStackHost.Instance.AppSettings.Get("csv_separator", ';'));
}
private static readonly char csvSeparator;
public static char CsvSeparator => csvSeparator;
或者您也可以使用支持字段和自动 属性 getter
对不起,如果我不发表评论,但由于我需要粘贴代码,所以我不能发表评论...顺便说一句,这个解决方案也应该有效(而且我不需要私人道具)
public static readonly char CsvSeparator;
static Helper()
{
CsvSeparator = ServiceStack.ServiceStackHost.Instance.AppSettings.Get("csv_separator", ';');
}