【发布时间】:2010-12-07 16:56:22
【问题描述】:
首先是问题:
这可能吗?我的灵感来自Joe Wrobel's work(被遗忘的Codeplex project 的还原版)。在这里,您为提供者创建配置文件,它为它创建强类型,有效地为 Profile 类创建外观。
现在是背景故事!
我真的不喜欢magic strings。它们非常糟糕,在更新应用程序时可能会导致一些严重问题。曾使用 PHP 和 ColdFusion 等语言工作过,我知道很容易将它们放入您的应用程序中并在需要更改之前忘记它们。然后你必须追捕它们的每一个变化并相应地改变它们。
如果您遵循“开箱即用”的应用程序模板,.NET 并没有那么好。许多示例使用 web.config 中的 appsettings 来存储各种设置。这确实是一个存储的好地方,非常适合大多数应用程序。然而,当您开始直接调用它们时,问题开始出现 - 例如ConfigurationManager.AppSettings["MyAppSetting"]。那么你并没有比 PHP 用户更好,因为你又开始使用魔法字符串了。
这就是facades 的用武之地。Facades 提供了一种在一个地方从魔术字符串创建强类型对象的方法,并让开发人员从应用程序的其余部分引用该对象。
现在,我不再使用 web.config 来包含我的 appsettings,而是使用数据库来保存它们。在应用程序启动时,检索名称/值组合,然后通过Set 依次添加到ConfigurationManager.AppSettings。没什么大不了的(除了我之前的problem!)。
我的数据层、服务层和表示层可以访问这个“应用程序外观”,并保存诸如应用程序模式、使用 yada yada yada 的服务端点之类的东西,并限制了必须寻找许多魔术字符串的需要,向下到两个魔术字符串 - 一个(名称)在外观中,另一个(名称和值)在创建点(对我来说是 db)。
这个外观类最终会变得相当大,我最终会厌倦不得不更新它们。
所以我想做的是有一个 ApplicationFacade 类,它会在每次构建完成时自动生成。现在回到开头……这可能吗?
【问题讨论】:
标签: c# asp.net t4 appsettings facade