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

興味深いことに、質問を投稿した後、さまざまな単語でグーグルで検索し、そこに到達したものを見つけました。エラー処理が組み込まれたT4テンプレートです...投稿は次のとおりです。

構成ファイルでのAppSettingsアクセス用のT4テンプレート

現在の環境(VS 11 Beta + ASP.NET MVC 4アプリ)で機能するように、投稿で提供されているT4テンプレートコードを変更する必要がありました。

使い方?

T4テンプレートファイルをダウンロードしてAppSettings.tt、たとえばASP.NETMVCのルートに配置します。プロジェクトにファイルを含め、それを右クリックして選択する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-VisualStudio2012でのT4テンプレートのデバッグ

于 2012-05-23T22:47:38.460 に答える
4

に設定を入れる代わりに、カスタム構成セクションを作成します<appSettings>

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

独自のXML構成要素を使用してASP.NET構成設定を拡張できます。これを行うには、カスタム構成セクションハンドラーを作成します。ハンドラーは、System.Configuration.ConfigurationSectionクラスを継承する.NETFrameworkクラスである必要があります。セクションハンドラーは、Web.configファイルの特定のセクションのXML構成要素で定義されている設定を解釈して処理します。これらの設定は、ハンドラーのプロパティを介して読み書きできます。

于 2012-05-23T21:54:47.430 に答える