Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

ImportAttribute-Klasse

.NET Framework (current version)
 

Veröffentlicht: Oktober 2016

Gibt an, dass ein Eigenschaft, Feld oder Parameter-Wert von bereitgestellt werden, sollten die CompositionContainerObjekt.

Namespace:   System.ComponentModel.Composition
Assembly:  System.ComponentModel.Composition (in 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

NameBeschreibung
System_CAPS_pubmethodImportAttribute()

Initialisiert eine neue Instanz der ImportAttribute -Klasse, wobei der Export mit dem Standardnamen für den Vertrag.

System_CAPS_pubmethodImportAttribute(String)

Initialisiert eine neue Instanz der ImportAttribute -Klasse, wobei der Export mit dem angegebenen Vertragsnamen.

System_CAPS_pubmethodImportAttribute(String, Type)

Initialisiert eine neue Instanz der ImportAttribute -Klasse, wobei der Export mit dem angegebenen Vertragsnamen und Typ.

System_CAPS_pubmethodImportAttribute(Type)

Initialisiert eine neue Instanz der ImportAttribute -Klasse, wobei der Export mit dem Vertragsnamen vom angegebenen Typ abgeleitet.

NameBeschreibung
System_CAPS_pubpropertyAllowDefault

Ruft ab oder legt einen Wert, der angibt, ob die Eigenschaft, Feld oder Parameter auf den Standardwert des entsprechenden Typs festgelegt werden, wenn ein Export mit dem Vertragsnamen nicht im Container vorhanden ist.

System_CAPS_pubpropertyAllowRecomposition

Ruft ab oder legt einen Wert, der angibt, ob die Eigenschaft oder das Feld neu erstellt wird, wenn Exporte mit einem entsprechenden Vertrag im Container geändert wurden.

System_CAPS_pubpropertyContractName

Ruft den Vertragsnamen der zu importierenden Exports ab.

System_CAPS_pubpropertyContractType

Ruft den Typ des zu importierenden Exports ab.

System_CAPS_pubpropertyRequiredCreationPolicy

Ruft ab oder legt einen Wert, der angibt, dass der Importer eine bestimmte CreationPolicy für die Exporte benötigt, um diesen Import auszuführen.

System_CAPS_pubpropertySource

Ruft ab oder legt einen Wert, der die Bereiche angibt, aus denen der Import erfüllt werden kann.

System_CAPS_pubpropertyTypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.(Geerbt von „Attribute“.)

NameBeschreibung
System_CAPS_pubmethodEquals(Object)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.(Geerbt von „Attribute“.)

System_CAPS_protmethodFinalize()

Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Geerbt von „Object“.)

System_CAPS_pubmethodGetHashCode()

Gibt den Hashcode für diese Instanz zurück.(Geerbt von „Attribute“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethodIsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.(Geerbt von „Attribute“.)

System_CAPS_pubmethodMatch(Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse gibt einen Wert, der angibt, ob diese Instanz gleich ein angegebenen Objekt ist.(Geerbt von „Attribute“.)

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

NameBeschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.(Geerbt von „Attribute“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.(Geerbt von „Attribute“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).(Geerbt von „Attribute“.)

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

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.(Geerbt von „Attribute“.)

Im Modell attributierten Programmierung der ImportAttribute wird 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 von ausgefüllt werden die CompositionContainer Objekt, zu dem dieser Teil gehört, mit den Exporten, CompositionContainer Objekt.

Ob ein Import mit einem angegebenen Export übereinstimmt, wird in erster Linie durch Vergleichen der Vertragsname und Vertragstyp bestimmt. Normalerweise müssen nicht eine der folgenden angeben, wenn der Import-Attribut im Code verwenden, und sie werden automatisch vom Typ des ergänzten Members abgeleitet. Wenn der Import einen Export eines anderen Typs (z. B. eine Unterklasse des Typs des ergänzten Members oder von diesem Member implementierte Schnittstelle) übereinstimmen muss, muss der Vertragstyp explizit angegeben werden. Der Vertragsname kann auch explizit angegeben werden, z. B. zur Unterscheidung zwischen mehreren Verträgen mit dem gleichen Typ, jedoch ist es besser, dazu über Metadaten. Weitere Informationen zu Metadaten finden Sie unter PartMetadataAttribute.

Das folgende Beispiel zeigt drei Klassen mit Membern der ImportAttribute, und drei Exporte, die diese zu vergleichen.

//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
Verfügbar seit 4.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 4.0

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: