Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

ImportAttribute, classe

Spécifie que la valeur d'une propriété, d'un champ ou d'un paramètre doit être fournie par l'objet CompositionContainer.

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

Espace de noms :  System.ComponentModel.Composition
Assembly :  System.ComponentModel.Composition (dans System.ComponentModel.Composition.dll)

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

Le type ImportAttribute expose les membres suivants.

  NomDescription
Méthode publiquePris en charge par Bibliothèque de classes portableImportAttribute()Initialise une nouvelle instance de la classe ImportAttribute, en important l'exportation avec le nom de contrat par défaut.
Méthode publiquePris en charge par Bibliothèque de classes portableImportAttribute(String)Initialise une nouvelle instance de la classe ImportAttribute, en important l'exportation avec le nom de contrat spécifié.
Méthode publiquePris en charge par Bibliothèque de classes portableImportAttribute(Type)Initialise une nouvelle instance de la classe ImportAttribute, en important l'exportation avec le nom de contrat dérivé du type spécifié.
Méthode publiquePris en charge par Bibliothèque de classes portableImportAttribute(String, Type)Initialise une nouvelle instance de la classe ImportAttribute, en important l'exportation avec le nom et le type de contrat spécifiés.
Début

  NomDescription
Propriété publiquePris en charge par Bibliothèque de classes portableAllowDefaultObtient ou définit une valeur qui indique si la propriété, le champ ou le paramètre a pour valeur la valeur par défaut de son type lorsqu'une exportation avec le nom de contrat n'est pas présente dans le conteneur.
Propriété publiquePris en charge par Bibliothèque de classes portableAllowRecompositionObtient 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.
Propriété publiquePris en charge par Bibliothèque de classes portableContractNameObtient le nom de contrat de l'exportation à importer.
Propriété publiquePris en charge par Bibliothèque de classes portableContractTypeObtient le type de l'exportation à importer.
Propriété publiquePris en charge par Bibliothèque de classes portableRequiredCreationPolicyObtient ou définit une valeur qui indique que l'importateur requiert un CreationPolicy spécifique pour les exportations utilisées pour satisfaire cette importation.
Propriété publiqueSourceObtient ou définit une valeur qui spécifie les portées dont cette importation peut être satisfaite.
Propriété publiqueTypeIdLors de son implémentation dans une classe dérivée, obtient un identificateur unique pour Attribute. (Hérité de Attribute.)
Début

  NomDescription
Méthode publiquePris en charge par Bibliothèque de classes portableEqualsInfrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode protégéePris en charge par Bibliothèque de classes portableFinalize 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.)
Méthode publiquePris en charge par Bibliothèque de classes portableGetHashCodeRetourne le code de hachage de cette instance. (Hérité de Attribute.)
Méthode publiquePris en charge par Bibliothèque de classes portableGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publiqueIsDefaultAttributeEn 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.)
Méthode publiqueMatchEn cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode protégéePris en charge par Bibliothèque de classes portableMemberwiseCloneCrée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode publiquePris en charge par Bibliothèque de classes portableToStringRetourne une chaîne qui représente l'objet actif. (Hérité de Object.)
Début

  NomDescription
Implémentation d'interface expliciteMéthode privée_Attribute.GetIDsOfNamesMappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée_Attribute.GetTypeInfoRé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.)
Implémentation d'interface expliciteMéthode privée_Attribute.GetTypeInfoCountRécupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée_Attribute.InvokeFournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute.)
Début

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 l'objet CompositionContainer auquel cette partie appartient, en utilisant les exportations fournies à cet objet CompositionContainer.

La correspondance entre une importation et une exportation donnée est déterminée principalement en comparant le nom de contrat et le type de contrat. Ordinairement, vous n'avez pas à spécifier l'un ou l'autre lors de l'utilisation de l'attribut d'importation dans le code, et ils seront déduits automatiquement 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 de même type, mais il est habituellement préférable de le faire via des métadonnées. Pour plus d'informations sur les métadonnées, consultez PartMetadataAttribute.

L'exemple suivant montre trois classes avec des membres décorés avec 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

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4

.NET Framework Client Profile

Pris en charge dans : 4

Bibliothèque de classes portable

Pris en charge dans : Bibliothèque de classes portable

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 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft