Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

ImportAttribute classe

 

Date de publication : novembre 2016

Spécifie qu’une valeur de propriété, champ ou paramètre doit être fournie par le CompositionContainer.object

Espace de noms:   System.ComponentModel.Composition
Assembly:  System.ComponentModel.Composition (dans 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

NomDescription
System_CAPS_pubmethodImportAttribute()

Initialise une nouvelle instance de la ImportAttribute classe, en important l’exportation avec le nom de contrat par défaut.

System_CAPS_pubmethodImportAttribute(String)

Initialise une nouvelle instance de la ImportAttribute classe, en important l’exportation avec le nom de contrat spécifié.

System_CAPS_pubmethodImportAttribute(String, Type)

Initialise une nouvelle instance de la ImportAttribute classe, en important l’exportation avec le nom de contrat spécifié et le type.

System_CAPS_pubmethodImportAttribute(Type)

Initialise une nouvelle instance de la ImportAttribute classe, en important l’exportation avec le nom de contrat dérivé du type spécifié.

NomDescription
System_CAPS_pubpropertyAllowDefault

Obtient ou définit une valeur qui indique si la propriété, champ ou paramètre est défini pour la valeur par défaut de son type lorsqu’une exportation avec le nom de contrat n’est pas présente dans le conteneur.

System_CAPS_pubpropertyAllowRecomposition

Obtient ou définit une valeur qui indique si la propriété ou le champ est recomposé lorsque des exportations avec un contrat correspondant ont changé dans le conteneur.

System_CAPS_pubpropertyContractName

Obtient le nom de contrat de l’exportation à importer.

System_CAPS_pubpropertyContractType

Obtient le type de l’exportation à importer.

System_CAPS_pubpropertyRequiredCreationPolicy

Obtient ou définit une valeur qui indique que l’importateur requiert son propre CreationPolicy pour les exportations utilisées pour satisfaire cette importation.

System_CAPS_pubpropertySource

Obtient ou définit une valeur qui spécifie les étendues à partir de laquelle cette importation peut être satisfaite.

System_CAPS_pubpropertyTypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.(Hérité de Attribute.)

NomDescription
System_CAPS_pubmethodEquals(Object)

Cette API prend en charge l’infrastructure de produit et n’est pas destinée à être utilisée directement depuis votre code. Retourne une valeur qui indique si cette instance est égale à un objet spécifié.(Hérité de Attribute.)

System_CAPS_protmethodFinalize()

Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)

System_CAPS_pubmethodGetHashCode()

Retourne le code de hachage de cette instance.(Hérité de Attribute.)

System_CAPS_pubmethodGetType()

Obtient le Type de l'instance actuelle.(Hérité de Object.)

System_CAPS_pubmethodIsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée.(Hérité de Attribute.)

System_CAPS_pubmethodMatch(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance équivaut à un objet spécifié.(Hérité de Attribute.)

System_CAPS_protmethodMemberwiseClone()

Crée une copie superficielle du Object actuel.(Hérité de Object.)

System_CAPS_pubmethodToString()

Retourne une chaîne qui représente l'objet actuel.(Hérité de Object.)

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.(Hérité de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.(Hérité de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).(Hérité de Attribute.)

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

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.(Hérité de Attribute.)

Dans le modèle de programmation par attributs, le ImportAttribute est utilisé pour déclarer les importations, ou dépendances, d’une partie donnée. Il peut décorer une propriété, un champ ou une méthode. Pendant la composition, les importations d’une partie seront remplies par le CompositionContainer objet auquel cette partie appartient, en utilisant les exportations fournies à cet CompositionContainer objet.

Si une importation correspond à une exportation donnée est déterminée principalement en comparant le nom de contrat et le type de contrat. En règle générale, il est inutile de spécifier ces lors de l’utilisation de l’attribut d’importation dans le code, et ils seront déduits automatiquement à partir du type du membre décoré. Si l’importation doit correspondre à une exportation d’un type différent (par exemple, une sous-classe du type du membre décoré ou une interface implémentée par ce membre), le type de contrat doit être spécifié explicitement. Le nom de contrat peut également être spécifié explicitement, par exemple pour faire la distinction entre plusieurs contrats du même type, mais il est généralement préférable de le faire via des métadonnées. Pour plus d’informations sur les métadonnées, consultez la page PartMetadataAttribute.

L’exemple suivant montre trois classes avec des membres décorés avec le ImportAttribute, et trois exportations qui leur correspondent.

//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
Disponible depuis 4.0
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 4.0

Tous les membres statiques publics ( Shared en Visual Basic) de ce type sont thread-safe. Les membres d’instance n’ont pas la garantie d’être thread-safe.

Retour au début
Afficher: