ExportAttribute Klasse

Definition

Gibt an, dass ein Typ, eine Eigenschaft, ein Feld oder eine methode einen bestimmten Export bereitstellt.

public ref class ExportAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Property, AllowMultiple=true, Inherited=false)]
public class ExportAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Property, AllowMultiple=true, Inherited=false)>]
type ExportAttribute = class
    inherit Attribute
Public Class ExportAttribute
Inherits Attribute
Vererbung
ExportAttribute
Attribute

Beispiele

Das folgende Beispiel zeigt, dass ExportAttribute auf drei Klassen angewendet wird, und drei Importe, die mit ihnen übereinstimmen.

//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 cases. 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();

    }
}
'Default export infers type and contract name from the
'exported type.  This is the preferred method.
<Export()>
Public Class MyExport1
    Public ReadOnly Property data As String
        Get
            Return "Test Data 1."
        End Get
    End Property
End Class

Public Class MyImporter1

    <Import()>
    Public Property ImportedMember As MyExport1

End Class

Public Interface MyInterface

End Interface

'Specifying the contract type may be important if
'you want to export a type other then the base type,
'such as an interface.
<Export(GetType(MyInterface))>
Public Class MyExport2
    Implements MyInterface
    Public ReadOnly Property data As String
        Get
            Return "Test Data 2."
        End Get
    End Property
End Class

Public Class MyImporter2
    'The import must match the contract type!
    <Import(GetType(MyInterface))>
    Public Property ImportedMember As MyExport2
End Class

'Specifying a contract name should only be 
'needed in rare cases. Usually, using metadata
'is a better approach.
<Export("MyContractName", GetType(MyInterface))>
Public Class MyExport3
    Implements MyInterface
    Public ReadOnly Property data As String
        Get
            Return "Test Data 3."
        End Get
    End Property
End Class

Public Class MyImporter3
    'Both contract name and type must match!
    <Import("MyContractName", GetType(MyInterface))>
    Public Property ImportedMember As MyExport3
End Class



Sub Main()
    Dim catalog As AggregateCatalog = New AggregateCatalog()
    catalog.Catalogs.Add(New AssemblyCatalog(GetType(MyExport1).Assembly))
    Dim container As CompositionContainer = New CompositionContainer(catalog)
    Dim test1 As MyImporter1 = New MyImporter1()
    Dim test2 As MyImporter2 = New MyImporter2()
    Dim test3 As MyImporter3 = 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()
End Sub

Hinweise

Im attributierte Programmiermodell deklariert das ExportAttribute-Attribut, dass ein Teil exportiert oder für den Kompositionscontainer bereitgestellt wird, ein Objekt, das einen bestimmten Vertrag erfüllt. Während der Komposition enthalten Teile mit Importen mit übereinstimmenden Verträgen diese Abhängigkeiten, die vom exportierten Objekt ausgefüllt wurden.

Das ExportAttribute-Attribut kann entweder auf eine gesamte Klasse oder eine Eigenschaft, ein Feld oder eine Methode einer Klasse angewendet werden. Wenn sie auf die gesamte Klasse angewendet wird, ist eine Instanz der Klasse das exportierte Objekt. Wenn es auf ein Element einer Klasse angewendet wird, ist das exportierte Objekt der Wert dieses Elements.

Gibt an, ob ein Vertrag in erster Linie durch den Vertragsnamen und den Vertragstyp bestimmt wird. Weitere Informationen finden Sie in der Referenz zu ImportAttribute.

Konstruktoren

Name Beschreibung
ExportAttribute()

Initialisiert eine neue Instanz der ExportAttribute Klasse, wobei der typ oder das Element exportiert wird, der mit diesem Attribut unter dem Standardvertragsnamen markiert ist.

ExportAttribute(String, Type)

Initialisiert eine neue Instanz der ExportAttribute Klasse, wobei der angegebene Typ unter dem angegebenen Vertragsnamen exportiert wird.

ExportAttribute(String)

Initialisiert eine neue Instanz der ExportAttribute Klasse, wobei der typ oder das Element exportiert wird, der mit diesem Attribut unter dem angegebenen Vertragsnamen gekennzeichnet ist.

ExportAttribute(Type)

Initialisiert eine neue Instanz der ExportAttribute Klasse, wobei der typ oder das Element exportiert wird, der mit diesem Attribut unter einem vom angegebenen Typ abgeleiteten Vertragsnamen gekennzeichnet ist.

Eigenschaften

Name Beschreibung
ContractName

Ruft den Vertragsnamen ab, der zum Exportieren des Typs oder Elements verwendet wird, der mit diesem Attribut gekennzeichnet ist.

ContractType

Ruft den Vertragstyp ab, der vom Element exportiert wird, das durch dieses Attribut gekennzeichnet ist.

Methoden

Name Beschreibung
Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diesen instance zurück.

(Geerbt von Attribute)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: