Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe ImportAttribute

Specifica che una proprietà, un campo o un valore di parametro deve essere fornito dall'oggetto CompositionContainer.

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

Spazio dei nomi:  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

Il tipo ImportAttribute espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoSupportato da Libreria di classi portabileImportAttribute()Inizializza una nuova istanza della classe ImportAttribute, che imposta l'esportazione con il nome di contratto predefinito.
Metodo pubblicoSupportato da Libreria di classi portabileImportAttribute(String)Inizializza una nuova istanza della classe ImportAttribute, che importa l'esportazione con il nome di contratto specificato.
Metodo pubblicoSupportato da Libreria di classi portabileImportAttribute(Type)Inizializza una nuova istanza della classe ImportAttribute, che importa l'esportazione con il nome di contratto derivato dal tipo specificato.
Metodo pubblicoSupportato da Libreria di classi portabileImportAttribute(String, Type)Inizializza una nuova istanza della classe ImportAttribute, che importa l'esportazione con il nome e il tipo di contratto specificati.
In alto

  NomeDescrizione
Proprietà pubblicaSupportato da Libreria di classi portabileAllowDefaultOttiene o imposta un valore che indica se la proprietà, il campo o il parametro verrà impostato sul valore predefinito del relativo tipo quando un'esportazione con il nome del contratto non è presente nel contenitore.
Proprietà pubblicaSupportato da Libreria di classi portabileAllowRecompositionOttiene o imposta un valore che indica se la proprietà o il campo sarà ricomposto quando le esportazioni con contratto corrispondente vengono modificate nel contenitore.
Proprietà pubblicaSupportato da Libreria di classi portabileContractNameOttiene il nome del contratto dell'esportazione da importare.
Proprietà pubblicaSupportato da Libreria di classi portabileContractTypeOttiene il tipo dell'esportazione da importare.
Proprietà pubblicaSupportato da Libreria di classi portabileRequiredCreationPolicyOttiene o imposta un valore che indica che l'utilità di importazione richiede un oggetto CreationPolicy specifico per le esportazioni utilizzate per soddisfare questa importazione.
Proprietà pubblicaSourceOttiene o imposta un valore che specifica gli ambiti da cui questa importazione può essere soddisfatta.
Proprietà pubblicaTypeId Quando implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute. (Ereditato da Attribute)
In alto

  NomeDescrizione
Metodo pubblicoSupportato da Libreria di classi portabileEqualsInfrastruttura. Restituisce un valore che indica se l'istanza è uguale ad un oggetto specificato. (Ereditato da Attribute)
Metodo protettoSupportato da Libreria di classi portabileFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoSupportato da Libreria di classi portabileGetHashCode Restituisce il codice hash per l'istanza corrente. (Ereditato da Attribute)
Metodo pubblicoSupportato da Libreria di classi portabileGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoIsDefaultAttribute Quando viene eseguito l'override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute)
Metodo pubblicoMatch Quando viene eseguito l'override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute)
Metodo protettoSupportato da Libreria di classi portabileMemberwiseClone Crea una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblicoSupportato da Libreria di classi portabileToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto

  NomeDescrizione
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.GetIDsOfNames Esegue il mapping di un set di nomi a un corrispondente set di identificatori di dispatch. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.GetTypeInfo Recupera le informazioni sui tipi per un oggetto, che possono essere utilizzate per ottenere informazioni sul tipo per un'interfaccia. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.GetTypeInfoCount Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1). (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.Invoke Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto. (Ereditato da Attribute)
In alto

Nel modello di programmazione con attributi, ImportAttribute viene utilizzato per dichiarare le importazioni o dipendenze, di una parte specificata. È possibile decorare una proprietà, un campo o un metodo. Durante la composizione, le importazioni di una parte saranno riempite dall'oggetto CompositionContainer al quale quella parte appartiene, tramite le esportazioni fornite a quel oggetto CompositionContainer.

La corrispondenza di un'importazione a un'esportazione specificata viene determinata principalmente confrontando il nome del contratto al tipo di contratto. In genere, non è necessario specificare uno di essi quando si utilizza l'attributo di importazione nel codice; e verranno derivati automaticamente dal tipo del membro decorato. Se l'importazione deve corrispondere a un'esportazione di un tipo diverso (ad esempio, una sottoclasse del tipo del membro decorato o un'interfaccia implementata da quel membro), il tipo di contratto deve essere specificato in modo esplicito. Il nome del contratto può anche essere specificato in modo esplicito, ad esempio per distinguere tra più contratti con lo stesso tipo, ma di solito è meglio farlo tramite i metadati. Per ulteriori informazioni sui metadati, vedere PartMetadataAttribute.

Nell'esempio riportato di seguito vengono mostrate tre classi con membri decorati con ImportAttributee tre esportazioni a essi corrispondenti.


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

Supportato in: 4.5.2, 4.5.1, 4.5, 4

.NET Framework Client Profile

Supportato in: 4

Libreria di classi portabile

Supportato in: Libreria di classi portabile

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 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft