T4MVC for Web.config <appSettings>

Len*_*rri 4 asp.net-mvc appsettings compile-time magic-string t4mvc

关于好事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>
Run Code Online (Sandbox Code Playgroud)

所以,而不是这个:

private static readonly int PasswordExpiresInDays =
int.Parse(ConfigurationManager.AppSettings["PasswordExpiresInDays"]);
Run Code Online (Sandbox Code Playgroud)

我们有这样的事情:

MVC.Webconfig.PasswordExpiresInDays
Run Code Online (Sandbox Code Playgroud)

要么

MVC.AppSettings.PasswordExpiresInDays
Run Code Online (Sandbox Code Playgroud)

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

这甚至可行吗?如果是的话,你知道是否已经在某处实现了类似的东西吗?

Jak*_*cki 5

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

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

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


Len*_*rri 5

好吧,有趣的是,在我发布问题之后,我用不同的话搜索了一些问题并发现了一些内容:一个内置错误处理的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" #>
Run Code Online (Sandbox Code Playgroud)

某些应用程序设置的名称中Web.config包含冒号(:),例如webpages:Version.这就是我做的工作:

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

请注意setting.Replace以上内容.

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

微小的快乐功能#1 - 在Visual Studio 2012中进行T4模板调试