4

T4MVC的好处是它允许您摆脱文字/魔术字符串

T4MVC 是用于 ASP.NET MVC 应用程序的 T4 模板,它创建强类型帮助程序,在引用控制器、操作和视图时消除了文字字符串的使用。

我只是想知道在Web.config文件中的应用程序设置方面是否可以有类似的东西:

<appSettings>
    <add key="SecurityGuardEmailFrom" value="info@email.net" />
    <add key="PasswordExpiresInDays" value="1" />
    <add key="NumberOfPasswordsToKeep" value="5" />
</appSettings>

所以,而不是这个:

private static readonly int PasswordExpiresInDays =
int.Parse(ConfigurationManager.AppSettings["PasswordExpiresInDays"]);

我们会有这样的事情:

MVC.Webconfig.PasswordExpiresInDays

或者

MVC.AppSettings.PasswordExpiresInDays

这将有助于在编译时检查应用程序设置是否仍然存在,从而避免运行时错误。

这甚至可行吗?如果是,您知道是否已经在某处实施了与此类似的东西?

4

2 回答 2

5

好吧,很有趣,在我发布了这个问题后,我用不同的词在 Google 上搜索并找到了一些东西:一个 T4 模板,它内置了很好的错误处理......这是帖子:

配置文件中 AppSettings 访问的 T4 模板

我不得不更改帖子中提供的 T 4 模板代码,以使其在我当前的环境中工作(VS 11 Beta + ASP.NET MVC 4 应用程序)。

如何使用?

例如,下载AppSettings.ttT4 模板文件并将其放在 ASP.NET MVC 的根目录中。将文件包含在您的项目中,然后右键单击它并选择Run Custom Tool,您就完成了。AppSettings您的所有应用程序设置都将提供一个名为的新类。惊人的!:)

这些是我正在使用的导入:

<#@ template language="C#" debug="true" hostspecific="true" #>
<#@ output extension=".cs" #>
<#@ Assembly Name="System.Core.dll" #>
<#@ assembly name="EnvDTE" #>
<#@ Assembly name="System.Configuration"#>
<#@ import namespace="System" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Diagnostics" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Collections" #>
<#@ import namespace="System.Collections.Specialized"#>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Configuration" #>

中的某些应用程序设置Web.config的名称中有一个冒号 (:),例如webpages:Version. 这就是我为使其工作所做的工作:

public static string  <#=setting.Replace(":", "")#>
{
    get
    {
        return getConfigSetting("<#=setting#>");
    }
}

注意setting.Replace以上。

如果您愿意,还可以调试 T4 模板。只需按照此处描述的步骤操作:

Tiny Happy Features #1 - Visual Studio 2012 中的 T4 模板调试

于 2012-05-23T22:47:38.460 回答
4

创建自定义配置部分,而不是将您的设置放入<appSettings>.

http://msdn.microsoft.com/en-us/library/2tw134k3.aspx

您可以使用自己的 XML 配置元素扩展 ASP.NET 配置设置。为此,您需要创建一个自定义配置节处理程序。处理程序必须是从 System.Configuration.ConfigurationSection 类继承的 .NET Framework 类。节处理程序解释和处理在 Web.config 文件的特定节中的 XML 配置元素中定义的设置。您可以通过处理程序的属性读取和写入这些设置。

于 2012-05-23T21:54:47.430 回答