xel*_*o52 2 c# encapsulation web-config lookup-tables appsettings
我目前正在扩展一些利用查找表的现有代码.现在,该表大约有25个条目,无论好坏,键/值都存储在web.conf的appsettings部分.它们被读入字典并在整个应用程序中使用.
我将查找表的大小增加到大约300个条目,这是该域的完整值集 - 所以它不太可能变得更大,也不会经常更改.我不确定将这些数据保存在web.conf中是个好主意.数据库不是此实现的选项,因此我正在寻找另一种存储此数据的方法.我的一些想法是:
我倾向于在一个包含操作数据集的方法的类中填充静态字典.任何建议,评论或愤怒的呼喊将不胜感激.
您可以将其他键值对存储在通过appSettings元素引用的配置文件中 - 这样可以使主配置文件保持整洁,并将附加配置存储在其自己的相关配置文件中.
这在MSDN文章- appSettings元素(常规设置架构)中进行了解释.
这实际上是您的第二和第三项的组合.
出于维护原因,我不会把它放在代码中的静态字典中 - 配置文件也是这个数据更明显的地方.通过利用内置的.Net功能,您也不会冒其他人忽略Xml文件的风险.
一个更具体的例子是(注意文件路径是相对于主应用程序的):
的app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings file="mykeyvaluepairs.config"/>
</configuration>
Run Code Online (Sandbox Code Playgroud)
mykeyvaluepairs.config
<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
<add key="imaginativelynamedkey1" value="imaginativelynamedvalue1" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
请注意,在您的原始app.config中,还可以执行以下操作:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings file="mykeyvaluepairs.config">
<add key="CanBeOverridenByItemInChildConfigFileWithSameName" value="UnicornsGoHere" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
也就是说,除非您重新定义mykeyvaluepairs.config文件中的appsettings,否则它们将并排存在 - 但mykeyvaluepairs.config中具有相同名称的项将覆盖主配置中的值.
归档时间: |
|
查看次数: |
2451 次 |
最近记录: |