我有一小段用c#编写的Windows服务代码,看起来像这样:
bool status = assign value based on some logic above;
if ( status == "A" || status == "B" )
{
DoSomething();
}
else
{
DoSomethingElse();
}
变量状态可以具有从A到Z的值。到目前为止,如果值是A
或B
,则调用DoSomething()
方法。如果明天还会有一个关于状态C
的要求,那么我必须调用此方法,我将不得不更改以下代码:
if ( status == "A" || status == "B" || status == "C" )
{
DoSomething();
}
else
{
DoSomethingElse();
}
因此,每当需求发生变化时,我都需要更改if条件,构建并部署它,这很费时间。有没有一种方法可以像在配置文件或任何其他文件中一样动态配置它,只需添加新状态,它就会动态选择。我只需要重新启动服务,而不是每次都部署它。
这对我非常有帮助。谢谢!
答案 0 :(得分:2)
您有几种可能性:
一个人可能正在从文件(.xml / .txt / .ini / ...),数据库或其他某种类型的存储中读取状态值,然后检查以下内容:
List<string> statusList = ReadStatus();
if(statusList.Contains(status))
DoSomething();
else
DoSomethingElse();
答案 1 :(得分:0)
正如其他人指出的那样,您可以简单地使用txt / json /任何类型的文件来存储状态值。
如果需要,您还可以利用FileSystemWatcher
,以便在文件更改时收到通知。这样一来,当状态收集发生更改时,您无需重新启动应用程序。
ref:https://docs.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher?view=netframework-4.8