(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

ImportAttribute-Klasse

Gibt an, dass eine Eigenschaft, ein Feld oder ein Parameterwert vom CompositionContainer-Objekt bereitgestellt werden sollen.

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

Namespace:  System.ComponentModel.Composition
Assembly:  System.ComponentModel.Composition (in System.ComponentModel.Composition.dll)

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

Der ImportAttribute-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekImportAttribute()Initialisiert eine neue Instanz der ImportAttribute-Klasse, wobei der Export mit dem Standardvertragsnamen importiert wird.
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekImportAttribute(String)Initialisiert eine neue Instanz der ImportAttribute-Klasse, wobei der Export mit dem angegebenen Vertragsnamen importiert wird.
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekImportAttribute(Type)Initialisiert eine neue Instanz der ImportAttribute-Klasse, wobei der Export mit dem aus dem angegebenen Typ abgeleiteten Vertragsnamen importiert wird.
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekImportAttribute(String, Type)Initialisiert eine neue Instanz der ImportAttribute-Klasse, wobei der Export mit dem angegebenen Vertragsnamen und Typ importiert wird.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekAllowDefaultRuft einen Wert ab, der angibt, ob die Eigenschaft, das Feld oder der Parameter auf den Standardwert des Typs festgelegt werden, wenn kein Export mit dem Vertragsnamen im Container vorhanden ist, oder legt ihn fest.
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekAllowRecompositionRuft einen Wert ab, der angibt, ob die Eigenschaft oder das Feld neu erstellt wird, wenn Exporte mit einem entsprechenden Vertrag im Container geändert wurden, oder legt ihn fest.
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekContractNameRuft den Vertragsnamen des zu importierenden Exports ab.
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekContractTypeRuft den Typ des zu importierenden Exports ab.
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekRequiredCreationPolicyRuft einen Wert ab, der angibt, dass der Importer eine bestimmte CreationPolicy für die Exporte benötigt, um diesen Import auszuführen, oder legt ihn fest.
Öffentliche EigenschaftSourceRuft einen Wert ab oder legt einen Wert fest, der die Bereiche angibt, die den Import erfüllen.
Öffentliche EigenschaftTypeIdBei Implementierung in einer abgeleiteten Klasse wird ein eindeutiger Bezeichner für dieses Attribute abgerufen. (Von Attribute geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekEqualsInfrastruktur. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Von Attribute geerbt.)
Geschützte MethodeUnterstützt von Portable KlassenbibliothekFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekGetHashCodeGibt den Hashcode für diese Instanz zurück. (Von Attribute geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche MethodeIsDefaultAttributeBeim Überschreiben in einer abgeleiteten Klasse wird angegeben, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist. (Von Attribute geerbt.)
Öffentliche MethodeMatchBeim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Von Attribute geerbt.)
Geschützte MethodeUnterstützt von Portable KlassenbibliothekMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

  NameBeschreibung
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetIDsOfNamesOrdnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetTypeInfoRuft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetTypeInfoCountRuft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.InvokeStellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Von Attribute geerbt.)
Zum Seitenanfang

Im Modell der attributierten Programmierung wird der ImportAttribute verwendet, um die Importe oder Abhängigkeiten, eines bestimmten Teils zu deklarieren. Es kann eine Eigenschaft, ein Feld oder eine Methode ergänzen. Während der Komposition werden die Importe eines Teils vom CompositionContainer-Objekt ausgefüllt, zu dem dieser Teil gehört, mit den Exporten in dieses CompositionContainer-Objekt.

Ob ein Import mit einem angegebenen Export übereinstimmt, wird hauptsächlich bestimmt, indem der Vertragsname und der Vertragstyp verglichen werden. Gewöhnlich beim Verwenden des Importattributs in Code müssen Sie beiden von diesen nicht angeben, und sie werden automatisch vom Typ des ergänzten Members abgeleitet. Wenn der Import eine Entsprechung für einen Export von einem anderen Typ (z. B. eine Unterklasse des Typs des ergänzten Members, oder eine von diesem Member implementierte Schnittstelle) finden muss, dann muss der Vertragstyp explizit angegeben werden. Der Vertragsname kann auch explizit angegeben werden, z. B. um zwischen mehreren Verträgen mit dem gleichen Typ zu unterscheiden, aber es ist normalerweise besser, dieses durch Metadaten zu machen. Weitere Informationen zu Metadaten finden Sie unter PartMetadataAttribute.

Das folgende Beispiel zeigt drei Klassen mit Membern mit ergänztem ImportAttribute-Attribut sowie drei entsprechende Exporte.


//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

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4

.NET Framework Client Profile

Unterstützt in: 4

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft