S2Container.NETでは、定義ファイル中に式言語として JScript.NET を利用しています。 定義ファイルの中で、文字列で記述した内容(式)を.NETのオブジェクトに変換することが出来ます。

  • 文字列は、"hoge"のように"で囲みます。
  • charは、'a'のように'で囲みます。
  • 数値は、123のようにそのまま記述します。
  • 論理値(System.Boolean)は、true,falseのようにそのまま記述します。
  • 列挙体(System.Enum)は、System.Data.DbType.Decimalのように列挙体の完全修飾名とメンバ名で記述します。(厳密には、JScript.NETの記法ではありません)
  • 型宣言(System.Type)は、Foo.BarのようにTypeの完全修飾名を記述します。(厳密には、JScript.NETの記法ではありません)
  • new DateTime()のように標準ライブラリ(mscorlib.dll)のクラスや構造体のコンストラクタを呼び出すことができます。(名前空間のSystemは省略して呼び出します)

 詳しくは、 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コンテナ

 S2コンテナにMessageと名前が付けられたHashtableが登録されており、 "Hello"というキーでセットされている値を取り出す例です。

<property name="Message">container.GetComponent("Message")["Hello"]</property>

アプリケーション構成ファイル(appSettings)

 アプリケーション構成ファイルの appSettings に以下の設定がされており、 "message"というキーでセットされている値を取り出す例です。

<configuration>

    <appSettings>
        <add key="message" value="Hello" />
    </appSettings>
    
</configuration>

<property name="Message">appSettings['message']</property>

アプリケーション構成ファイル(connectionStrings)

 アプリケーション構成ファイルの 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>