存储300条目查找表(c#)的数据的方法

xel*_*o52 2 c# encapsulation web-config lookup-tables appsettings

我目前正在扩展一些利用查找表的现有代码.现在,该表大约有25个条目,无论好坏,键/值都存储在web.conf的appsettings部分.它们被读入字典并在整个应用程序中使用.

我将查找表的大小增加到大约300个条目,这是该域的完整值集 - 所以它不太可能变得更大,也不会经常更改.我不确定将这些数据保存在web.conf中是个好主意.数据库不是此实现的选项,因此我正在寻找另一种存储此数据的方法.我的一些想法是:

  • 一本静态字典?
  • Xml文件(或其他一些平面外部数据文件)
  • 将它留在web.conf的appsettings部分?

我倾向于在一个包含操作数据集的方法的类中填充静态字典.任何建议,评论或愤怒的呼喊将不胜感激.

das*_*ash 7

您可以将其他键值对存储在通过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中具有相同名称的项将覆盖主配置中的值.