3

好的,所以这个让我有点困惑。我有以下内容:

string csvOfAttributes = CableSolve.Web.Properties.Settings.Default.GenerateBoothReportAttributes;

在我的 web.config 中:

<CableSolve.Web.Properties.Settings>
  <setting name="GenerateBoothReportAttributes" serializeAs="String">
    <value>327, 329, 330, 369, 342</value>
  </setting>
</CableSolve.Web.Properties.Settings>

我对此有两个问题:

  • 如果我从 web.config 文件中省略我的设置,我会收到编译错误。这怎么可能?Web.config 是用户可编辑的;我只期望运行时错误。如果我编译我的应用程序,部署,然后用户编辑这个设置的名称——那不会破坏编译的代码吗?
  • 我可能会将此设置存储在我的 web.config 文件的 appConfig 部分中。要访问这些值,我会通过 ConfigurationManager ——如果设置丢失,我只会在运行时收到一个空对象。这似乎不太有利,因为我倾向于更喜欢在编译期间出现的错误,但这让我想知道:这两个选项之间有什么区别以及我应该何时使用它们?
4

1 回答 1

0

我认为答案主要包含在问题中:整个区别在于基本的键值对模式与更复杂的模式。通过扩展,差异涉及弱类型与强类型,以及运行时与编译时。一般来说,后者更好,就像 .NET 比 Javascript “更好”一样:您会尽早收到错误警报,而不是让它们以不可预测和难以追踪的方式冒泡到您的应用程序中。强模式偏好的例外情况可能包括:

  • 您的应用程序需求在不断发展,因此您不想锁定模式
  • 您正在使用不同开发人员或应用程序将使用的根级别配置
  • 您希望允许“无效”配置并在运行时处理它们
于 2012-04-10T20:34:10.187 回答