ページ

2004年3月30日火曜日

Web.config に IConfigurationSectionHandler を使って独自の設定項目を追加 する

IConfigurationSectionHandler を使うと Web.Config に簡単に独自の設定を追加することができます。




MyConfig クラス

using System;
using System.Configuration;
using System.Xml;
using System.Xml.Serialization;
 
namespace WebApplication1
{
    [Serializable]
    public class MyConfig : IConfigurationSectionHandler
    {
        public object Create(object parent, object configContext, System.Xml.XmlNode section) 
        {
            XmlSerializer ser = new XmlSerializer(this.GetType());
            return ser.Deserialize(new XmlNodeReader(section));
        }
 
        public MyConfig()
        {
        }
 
        public static MyConfig Instance()
        {
            return (MyConfig)ConfigurationSettings.GetConfig("MyConfig");
        }
 
        private string _strParam = "*";        // default: "*"
        public string StrParam
        {
            get { return _strParam; }
            set { _strParam = value; }
        }
 
        private bool _boolParam = true;        // default: true
        public bool BoolParam
        {
            get { return _boolParam; }
            set { _boolParam = value; }
        }
 
        private int _intParam = 10;            // default: 10
        public int IntParam
        {
            get { return _intParam; }
            set { _intParam = value; }
        }
    }
}



Web.config



<configuration>

    <configSections>

        <section name="MyConfig" type="WebApplication1.MyConfig, WebApplication1"/>

    </configSections>

 

    <MyConfig>

        <StrParam>abc</StrParam>

        <BoolParam>false</BoolParam>

        <IntParam>5</IntParam>

    </MyConfig>

</configuration>




こういう風にしておくと読み込みの際に MyConfig.Create が呼ばれるので XmlSerializer を使ってデシリアライズしてあげるわけです。
使うときはこんな感じ


Label1.Text = MyConfig.Instance().StrParam;

Label2.Text = MyConfig.Instance().BoolParam.ToString();

Label2.Text = MyConfig.Instance().IntParam.ToString();


ちなみにデシリアライズされた結果はキャッシュされているようで MyConfig.Instance() するたびにデシリアライズが実行されるということはありません。
あと、たとえば int 型の項目に "abc" とかって指定するとデシリアライズ時に例外が発生するのでエラーページが表示されることになります。

2004年3月26日金曜日

Visual Studio 2005 Community Technology Preview March 2004 - Full DVD Image (English)

おおっ、すでに MSDN Universal Downloads に上がってました。


PDC で配布されたのは 2003/08 くらいのビルドだったと思いますが、どのくらい変わってるんでしょうね。まぁ、ダウンロードしてみればわかるわけですが。って、今ダウンロード中だけどあと 10時間もかかるよ(^^;

2004年3月25日木曜日

Visual Studio 2005 Community Technology Preview

http://blogs.msdn.com/jledgard/archive/2004/03/23/94690.aspx


ちょうど今行われている VS Live! San Francisco で VS 2005 Tech Preview が配布される模様。


MSDN Universal Subscriber Downloads な人には近いうちにこの Preview にアクセスする方法についてインフォメーションがある模様(ということはダウンロードできるようになる?)。


早くも "Whidbey" ではなく "VS 2005" として登場するみたいですね。