T4MVC for Web.config <appsettings> </appsettings>

时间:2012-05-23 21:37:42

标签: asp.net-mvc appsettings compile-time t4mvc magic-string

关于T4MVC的好处是它可以让你摆脱literal/magic strings

  

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

这将有助于在编译时检查应用程序设置是否仍在那里避免运行时错误。

这是否可行?如果是的话,你知道在某个地方是否已经有类似的东西吗?

2 个答案:

答案 0 :(得分:5)

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

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

  

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

答案 1 :(得分:5)

嗯,有趣的是,在我发布问题之后,我用不同的话搜索了一些问题并发现了一些内容:一个内置错误处理的T4模板......这是帖子:

T4 Template For AppSettings Access In Config Files

我必须更改帖子中提供的T 4 template code,以使其在我当前的环境中运行(VS 11 Beta + ASP.NET MVC 4应用程序)。

如何使用?

下载AppSettings.tt T4模板文件并将其放在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 - T4 Template Debugging in Visual Studio 2012