しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Web.config から AppSettings クラスを生成する T4 を NuGet で公開しました

Web.config から AppSettings クラスを作成する T4 を書いてみた - しばやん雑記 の強化版を NuGet で公開しました。

NuGet Gallery | SwissKnife.T4.AppSettings 0.0.5

例えば、ASP.NET MVC 4 のアップデートで追加された Facebook App のテンプレートにインストールすると、以下のようなクラスが生成されます。

using System.Configuration;

namespace SwissKnife.T4
{
    public static class AppSettings
    {
        public static string ClientValidationEnabled
        {
            get { return ConfigurationManager.AppSettings["ClientValidationEnabled"]; }
        }

        public static class Facebook
        {
            public static string AppId
            {
                get { return ConfigurationManager.AppSettings["Facebook:AppId"]; }
            }

            public static string AppNamespace
            {
                get { return ConfigurationManager.AppSettings["Facebook:AppNamespace"]; }
            }

            public static string AppSecret
            {
                get { return ConfigurationManager.AppSettings["Facebook:AppSecret"]; }
            }

            public static string AuthorizationRedirectPath
            {
                get { return ConfigurationManager.AppSettings["Facebook:AuthorizationRedirectPath"]; }
            }

            public static class VerifyToken
            {
                public static string User
                {
                    get { return ConfigurationManager.AppSettings["Facebook:VerifyToken:User"]; }
                }
            }
        }

        public static string PreserveLoginUrl
        {
            get { return ConfigurationManager.AppSettings["PreserveLoginUrl"]; }
        }

        public static string UnobtrusiveJavaScriptEnabled
        {
            get { return ConfigurationManager.AppSettings["UnobtrusiveJavaScriptEnabled"]; }
        }

        public static class Webpages
        {
            public static string Enabled
            {
                get { return ConfigurationManager.AppSettings["webpages:Enabled"]; }
            }

            public static string Version
            {
                get { return ConfigurationManager.AppSettings["webpages:Version"]; }
            }
        }
    }
}

ドットや転んで区切られているとネストしたクラスとして出力するようになっています。ちなみにクラス、プロパティとして出力する時に先頭文字は自動的に大文字になります。