この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

ImportAttribute クラス

 

公開日: 2016年10月

指定のプロパティ、フィールド、またはパラメーターの値はによって提供されている、 CompositionContainerオブジェクト

名前空間:   System.ComponentModel.Composition
アセンブリ:  System.ComponentModel.Composition (System.ComponentModel.Composition.dll 内)

System.Object
  System.Attribute
    System.ComponentModel.Composition.ImportAttribute

[AttributeUsageAttribute(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, 
	AllowMultiple = false, Inherited = false)]
public class ImportAttribute : Attribute

名前説明
System_CAPS_pubmethodImportAttribute()

新しいインスタンスを初期化、 ImportAttribute クラスの既定のコントラクト名を持つエクスポートをインポートします。

System_CAPS_pubmethodImportAttribute(String)

新しいインスタンスを初期化、 ImportAttribute クラスは、指定したコントラクト名を持つエクスポートをインポートします。

System_CAPS_pubmethodImportAttribute(String, Type)

新しいインスタンスを初期化、 ImportAttribute クラスの指定したコントラクト名と型を持つエクスポートをインポートします。

System_CAPS_pubmethodImportAttribute(Type)

新しいインスタンスを初期化、 ImportAttribute 指定した型から派生したクラスのコントラクト名を持つエクスポートをインポートします。

名前説明
System_CAPS_pubpropertyAllowDefault

取得または設定を示すかどうか、プロパティ、フィールド、またはパラメーターはその型の既定値にコントラクト名を持つエクスポートがコンテナーに存在しない場合の値を設定します。

System_CAPS_pubpropertyAllowRecomposition

取得またはコンテナーに対応するコントラクトを持つエクスポートが変更されたときに、プロパティまたはフィールドを再構成するかどうかを示す値を設定します。

System_CAPS_pubpropertyContractName

インポートするエクスポートのコントラクト名を取得します。

System_CAPS_pubpropertyContractType

インポートするエクスポートの種類を取得します。

System_CAPS_pubpropertyRequiredCreationPolicy

インポーターが特定の必要があることを示す値を取得または CreationPolicy このインポートを満たすために使用するエクスポートします。

System_CAPS_pubpropertySource

取得または、このインポートを満たすことがありますスコープを指定する値を設定します。

System_CAPS_pubpropertyTypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。(Attribute から継承されます。)

名前説明
System_CAPS_pubmethodEquals(Object)

この API は 製品 インフラストラクチャをサポートします。コードから直接使用するためのものではありません。 このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。(Attribute から継承されます。)

System_CAPS_protmethodFinalize()

オブジェクトがガベージ コレクションにより収集される前に、そのオブジェクトがリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)

System_CAPS_pubmethodGetHashCode()

このインスタンスのハッシュ コードを返します。(Attribute から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_pubmethodIsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。(Attribute から継承されます。)

System_CAPS_pubmethodMatch(Object)

派生クラスでオーバーライドされた場合は、このインスタンスに指定したオブジェクトが等しいかどうかを示す値を返します。(Attribute から継承されます。)

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_pubmethodToString()

現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)

名前説明
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

一連の名前を対応する一連のディスパッチ識別子に割り当てます。(Attribute から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。(Attribute から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。(Attribute から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。(Attribute から継承されます。)

属性付きプログラミング モデルで、 ImportAttribute のインポート、または特定の部品の依存関係を宣言するために使用します。 プロパティ、フィールド、またはメソッドを装飾することができます。 パートのインポートを満たす作成中、 CompositionContainer オブジェクトの部分が所属することに提供されるエクスポートを使用して、 CompositionContainer オブジェクトです。

指定したエクスポートがインポートに一致するかどうかは、コントラクト名およびコントラクト型を比較することによって、主に決定されます。 通常、コードでは、インポート属性を使用する場合は、これらのいずれかを指定する必要はないと、装飾されたメンバーの型から自動的に推論するされます。 別の種類 (たとえば、装飾のメンバー、またはそのメンバーによって実装されるインターフェイスの型のサブクラス) のエクスポート、インポートが一致している場合、コントラクト型必要があります明示的に指定します。 コントラクト名を指定することも明示的にたとえば複数のコントラクトと同じ型を区別するためには、メタデータを使用する方が効率的です。 メタデータの詳細については、次を参照してください。 PartMetadataAttributeします。

次の例で修飾されたメンバーを持つ 3 つのクラスを示しています、 ImportAttribute, 、およびそれに一致する次の 3 つのエクスポートします。

//Default export infers type and contract name from the
//exported type.  This is the preferred method.
[Export]
public class MyExport1
{
    public String data = "Test Data 1.";
}

public class MyImporter1
{
    [Import]
    public MyExport1 importedMember { get; set; }
}

public interface MyInterface
{

}

//Specifying the contract type may be important if
//you want to export a type other then the base type,
//such as an interface.
[Export(typeof(MyInterface))]
public class MyExport2 : MyInterface
{
    public String data = "Test Data 2.";
}

public class MyImporter2
{
    //The import must match the contract type!
    [Import(typeof(MyInterface))]
    public MyExport2 importedMember { get; set; }
}

//Specifying a contract name should only be 
//needed in rare caes. Usually, using metadata
//is a better approach.
[Export("MyContractName", typeof(MyInterface))]
public class MyExport3 : MyInterface
{
    public String data = "Test Data 3.";
}

public class MyImporter3
{
    //Both contract name and type must match!
    [Import("MyContractName", typeof(MyInterface))]
    public MyExport3 importedMember { get; set; }
}

class Program
{      

    static void Main(string[] args)
    {
        AggregateCatalog catalog = new AggregateCatalog();
        catalog.Catalogs.Add(new AssemblyCatalog(typeof(MyExport1).Assembly));
        CompositionContainer _container = new CompositionContainer(catalog);
        MyImporter1 test1 = new MyImporter1();
        MyImporter2 test2 = new MyImporter2();
        MyImporter3 test3 = new MyImporter3();
        _container.SatisfyImportsOnce(test1);
        _container.SatisfyImportsOnce(test2);
        _container.SatisfyImportsOnce(test3);
        Console.WriteLine(test1.importedMember.data);
        Console.WriteLine(test2.importedMember.data);
        Console.WriteLine(test3.importedMember.data);
        Console.ReadLine();

    }
}

.NET Framework
4.0 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
4.0 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: