Seasarプロジェクト ＞ Seasar.NETプロジェクト ＞ S2Container.NET ＞ DIContainer ＞ Dicon タグリファレンス

# 目次

上へ

- DOCTYPE
- componentsタグ
- includeタグ
- componentタグ
- argタグ
- propertyタグ
- metaタグ
- initMethodタグ
- destroyMethodタグ
- aspectタグ
- descriptionタグ
- JScript.NET式

# DOCTYPE

上へ

DOCTYPEは、XML宣言の次に指定します。下記のように指定してください。

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
    "http://www.seasar.org/dtd/components21.dtd">
    <components>
        <component name="hello"
    class="Seasar.Examples.Reference.Injection.HelloConstructorInjection">
            <arg>"Hello World!"</arg>
        </component>

        <component name="ConstructorInjection"
    class="Seasar.Examples.Reference.Injection.HelloConstructorInjectionClient" />
    </components>

# componentsタグ(必須)

上へ

ルートのタグになります。

## namespace属性(任意)

名前空間を指定することができます。

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
    "http://www.seasar.org/dtd/components21.dtd">
    <components namespace="hoge">
        ...
    </components>

# includeタグ(任意)

上へ

分割されたS2Containerの定義を取り込む場合に使います。

## path属性(必須)

定義ファイルのパスを指定することができます。定義ファイルのパスには、埋め込まれたリソースもしくはファイルシステムで指定することができます。

埋め込まれたリソースを使用する場合は、定義ファイルの名前空間を含む完全限定名です。セパレータは、/です。 定義ファイルのビルドアクションプロパティは、埋め込まれたりソースに設定します。

C#プロジェクトの場合は、フォルダを作成すると名前空間が作成されます。VB.NETプロジェクトの場合は、フォルダを作成しても名前空間は作成されません。 例えば、プロジェクトフォルダ/Sample/Logic/aaa.diconとすると、C#プロジェクトの場合は、既定の名前空間/Sample/Logic/aaa.diconになります。 VB.NETの場合は、既定の名前空間/aaa.diconになります。

ファイルシステムを使用する場合は、一般的なファイルパスを指定します。絶対パス、相対パスを指定できます。

埋め込まれたリソース、ファイルシステムの定義ファイルを混在させることもできます。 同じパスで埋め込まれたリソース、ファイルシステムの両方でヒットする場合は、ファイルシステムの定義ファイルが優先されます。 componentタグの前に記述する必要があります。

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
    "http://www.seasar.org/dtd/components21.dtd">

    <components>
        <include path="aaa/bbb/ccc.dicon" />
    </components>

# componentタグ(任意)

上へ

コンポーネントを定義します。

## class属性(任意)

クラスの完全限定名を指定します。 ボディで、JScript.NET式を使って コンポーネントを指定した場合は、class属性を省略することができます。 JScript.NET式を使った場合にclass属性を指定すると、型チェックを行います。

## name属性(任意)

名前を指定することもできます。.NETの識別子として使えるものにします。 詳しくは、コンポーネントの取得を参照してください。

## instance属性(任意)

S2Containerがどのようにコンポーネントのインスタンスを管理するのかを指定することができます。 singleton(デフォルト)、prototype、outer、request、sessionを指定することができます。 詳しくは、インスタンス管理を参照してください。

## autoBinding属性(任意)

S2Containerがコンポーネントの依存関係をどのように解決するのかを指定できます。 auto(デフォルト)、constructor、property、noneを指定することができます。 詳しくは、自動バインディングを参照してください。

# argタグ(任意)

上へ

componentタグの子タグとして使った場合は、コンストラクタの引数になります。 記述した順番でコンストラクタに渡されます。 initMethodタグ、 destroyMethodタグの子タグとして使った場合は、メソッドの引数になります。 記述した順番でメソッドに渡されます。 引数として渡される実際の値は、ボディでJScript.NET式を使うか、 子タグでcomponentタグを使います。

# propertyタグ(任意)

上へ

componentタグの子タグとして使います。 プロパティとして設定される実際の値は、ボディでJScript.NET式を使うか、 子タグでcomponentタグを使います。

## name属性(必須)

プロパティ名を指定します。

# metaタグ(任意)

上へ

componentsタグ、componentタグ、 argタグ、propertyタグの子タグとして使います。 メタデータの値は、ボディでJScript.NET式を使うか、 子タグでcomponentタグを使います。

## name属性(任意)

メタ名を指定します。

# initMethodタグ(任意)

上へ

componentタグの子タグとして使います。 引数は、子タグでargタグを使います。 name属性を書かずにJScript.NET式を使って、コンポーネントのメソッドを呼び出すこともできます。 initMethodタグが定義されているコンポーネント自身を表すself、Console.Outを表すout、 Console.Errorを表すerrがinitMethodタグ内だけで有効なオブジェクトとして使えます。

## name属性(任意)

メソッド名を指定します。

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"

    "http://www.seasar.org/dtd/components21.dtd">
    <components>
        <component class="System.Collections.Hashtable">
            <initMethod name="Add">
                <arg>"aaa"</arg>
                <arg>111</arg>
            </initMethod>

            <initMethod>self.Add("aaa", 111)</initMethod>
            <initMethod>out.WriteLine("Hello")</initMethod>
        </component>
    </components>

# destroyMethodタグ(任意)

上へ

initMethodタグと同様です。

# aspectタグ(任意)

上へ

アスペクトをコンポーネントに組み込みます。 詳しくは、S2AOPのaspectタグの説明を参照してください。

# descriptionタグ(任意)

上へ

componentsタグ、componentタグ、 argタグ、propertyタグの子タグとしてdescriptionタグを使うことができます。 自由に説明を記述できます。

# JScript.NET式

上へ

JScript.NETについては以下のドキュメントを参照して下さい。

S2Container.NET JScript.NET式

© Copyright The Seasar Project and the others 2004-2009, all rights reserved.