inohilog

/var/log/inohiro.log

string world = AppSettings["World"];

xps2のコードの中に、設定ファイルを読んでいると思われる、

string apps = AppSettings["MonoApplications"];
string appConfigDir = AppSettings["MonoApplicationsConfigDir"];
string appConfigFile = AppSettings["MonoApplicationsConfigFile"];
string rootDir = AppSettings["MonoServerRootDir"];

といった記述があるんだけど、どこで定義されているかわからない。
System.Configuration名前空間を参照に追加して、

string World = ConfigurationManager.AppSetting["Hello"];

とか出来るけど、xsp2の場合は、そのまま「AppSettings["Hello"]」って書いてある。どうやってるんだ。

public static int Main( string[] args )
{
	AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler( CurrentDomain_UnhandledException );

	SecurityConfiguration security = new SecurityConfiguration();
	bool nonstop = false;
	bool verbose = false;
	Trace.Listeners.Add( new TextWriterTraceListener( Console.Out ) );
	string apps = AppSettings["MonoApplications"];
	string appConfigDir = AppSettings["MonoApplicationsConfigDir"];
	string appConfigFile = AppSettings["MonoApplicationsConfigFile"];
	string rootDir = AppSettings["MonoServerRootDir"];
	object oport;
        // 省略

追記

あった。ここでのAppSettingsはSystem.Configuration.ConfigurationManage*1のAppSettingsプロパティじゃなくて、System.Collection.SpecializedのNameValueCollectionだった。
いやAppSettingsプロパティはNameValueCollectionなんだけど、.NETのバージョンによってConfigurationManagerかConfigurationSettingsか勝手に取ってくるように書き換えてあった、みたいな表現が正しいのか。

		static NameValueCollection AppSettings
		{
			get
			{
#if NET_2_0
				return ConfigurationManager.AppSettings;
#else
				return ConfigurationSettings.AppSettings;
#endif
			}
		}

んーこうやって書くだけでいいのか?書いてみよう。

*1:.NET 1.xではSystem.Configuration.ConfigurationSettings