S2Container.NET TOPページへ
JScript.NET式
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 |
System.Collections.Specialized.NameValueCollection |
アプリケーション構成ファイルのappSettingsセクションの設定がセットされています
(バージョン1.2.1以降)
.NET 2.0ではSystem.Configuration.ConfigurationManager.AppSettings
の結果がセットされています
.NET 1.1ではSystem.Configuration.ConfigurationSettings.AppSettings
の結果がセットされています
|
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>
アプリケーション構成ファイル
アプリケーション構成ファイルに以下の設定がされており、
"message"というキーでセットされている値を取り出す例です。
<configuration>
<appSettings>
<add key="message" value="Hello" />
</appSettings>
</configuration>
<property name="Message">appSettings['message']</property>
|