我正在使用NDepend审查我前几段写的一些代码,最后我发现了这个警告
警告在以下snippt中提及
private static char csvSeparator;
public static char CsvSeparator => csvSeparator != Char.MinValue
? csvSeparator
: (csvSeparator =
ServiceStack.ServiceStackHost.Instance.AppSettings.Get("csv_separator", ';'));
这段代码的基础是我在app.config中定义了一个分隔符,然后这个代码在整个应用程序生命周期中都是相同的。我的代码读取它,然后它存储在一个静态变量中供将来使用。这个应用程序是一个用高频CSV文件创建的控制台,所以我不想浪费时间在每次需要时从配置文件中读取它
您能否为我提供该警告的解决方案? 提前致谢
答案 0 :(得分:1)
为避免出现任何问题,您应确保静态字段csvSeparator
字段仅由您的类的类构造函数方法指定。这样,您不仅可以将字段设置为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;
或者您也可以使用支持字段和自动属性获取器
答案 1 :(得分:0)
对不起,如果我不评论,但因为我需要粘贴代码我不能做评论...顺便说一下,这个解决方案也应该有用(我不需要私人道具)
public static readonly char CsvSeparator;
static Helper()
{
CsvSeparator = ServiceStack.ServiceStackHost.Instance.AppSettings.Get("csv_separator", ';');
}