S2Container.NETでは、定義ファイル中に式言語として JScript.NET を利用しています。 定義ファイルの中で、文字列で記述した内容(式)を.NETのオブジェクトに変換することが出来ます。
詳しくは、 JScript.NETのマニュアルを参照してください。
定義ファイルで指定するJScript.NET式では、あらかじめ以下のオブジェクトが使用できるようになっています。
名前 | 型 | 説明 |
---|---|---|
container | Seasar.Framework.Container. Impl.S2ContainerImpl |
現在のdiconファイルを処理しているS2コンテナです |
appSettings (1.2.1以降) |
System.Collections.Specialized. NameValueCollection |
アプリケーション構成ファイルのappSettingsセクションの設定がセットされています .NET 2.0ではSystem.Configuration.ConfigurationManager. AppSettings の結果がセットされています .NET 1.1ではSystem.Configuration.ConfigurationSettings. AppSettings の結果がセットされています |
connectionStrings (1.3.4以降) |
System.Configuration. ConnectionStringSettingsCollection |
アプリケーション構成ファイルのconnectionStringsセクションの設定がセットされます System.Configuration.ConfigurationManager. ConnectionStrings の結果がセットされます |
out | System.Console.Out | <initMethod>または<destroyMethod> のボディの中でのみ定義されています |
err | System.Console.Error | <initMethod>または<destroyMethod> のボディの中でのみ定義されています |
定義ファイルで指定するJScript.NET式では、あらかじめ以下の変数が使用できるようになっています。
名前 | 説明 |
---|---|
self | <initMethod>または<destroyMethod> のボディの中でのみ定義されている変数です。 この変数は,現在のコンポーネント (<initMethod>または <destroyMethod>を囲む<component> 要素で表されているオブジェクト) を参照します |
例としてpropertyタグのボディでJScript.NETを使用してみます。
<property name="Message">"こんにちは"</property>
<property name="Pi">3.14</property>
S2コンテナにMessageと名前が付けられたHashtableが登録されており、 "Hello"というキーでセットされている値を取り出す例です。
<property name="Message">container.GetComponent("Message")["Hello"]</property>
アプリケーション構成ファイルの appSettings に以下の設定がされており、 "message"というキーでセットされている値を取り出す例です。
<configuration> <appSettings> <add key="message" value="Hello" /> </appSettings> </configuration>
<property name="Message">appSettings['message']</property>
アプリケーション構成ファイルの connectionStrings に以下の設定がされており、 接続文字列を取り出す例です。
<configuration> <connectionStrings> <add name="con1" connectionString= "Server=(local);database=s2dotnetdemo;Integrated Security=SSPI" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration>
<property name="ConStr">connectionStrings['con1'].ConnectionString</property>