Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe ImportAttribute

 

Data di pubblicazione: ottobre 2016

Specifica che un valore di proprietà, campo o parametro deve essere fornito dal CompositionContaineragli oggetti

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

NomeDescrizione
System_CAPS_pubmethodImportAttribute()

Inizializza una nuova istanza di ImportAttribute classe, che importa l'esportazione con il nome del contratto predefinito.

System_CAPS_pubmethodImportAttribute(String)

Inizializza una nuova istanza di ImportAttribute classe, che importa l'esportazione con il nome di contratto specificato.

System_CAPS_pubmethodImportAttribute(String, Type)

Inizializza una nuova istanza di ImportAttribute (classe), l'esportazione con il nome di contratto specificato e il tipo di importazione.

System_CAPS_pubmethodImportAttribute(Type)

Inizializza una nuova istanza di ImportAttribute Importa l'esportazione con il nome del contratto derivata dal tipo specificato.

NomeDescrizione
System_CAPS_pubpropertyAllowDefault

Ottiene o imposta un valore che indica se la proprietà, campo o parametro verrà impostato sul valore predefinito del relativo tipo quando un'esportazione con il nome del contratto non è presente nel contenitore.

System_CAPS_pubpropertyAllowRecomposition

Ottiene o imposta un valore che indica se la proprietà o il campo verrà ricomporre quando vengono modificate le esportazioni con un contratto corrispondente nel contenitore.

System_CAPS_pubpropertyContractName

Ottiene il nome del contratto dell'esportazione da importare.

System_CAPS_pubpropertyContractType

Ottiene il tipo di esportazione da importare.

System_CAPS_pubpropertyRequiredCreationPolicy

Ottiene o imposta un valore che indica che l'utilità di importazione richiede una specifica CreationPolicy per le esportazioni utilizzate per soddisfare questa importazione.

System_CAPS_pubpropertySource

Ottiene o imposta un valore che specifica gli ambiti da cui può essere soddisfatte questa importazione.

System_CAPS_pubpropertyTypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.(Ereditato da Attribute.)

NomeDescrizione
System_CAPS_pubmethodEquals(Object)

Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Restituisce un valore che indica se questa istanza è uguale ad un oggetto specificato. (Ereditato da Attribute.)

System_CAPS_protmethodFinalize()

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.)

System_CAPS_pubmethodGetHashCode()

Restituisce il codice hash per questa istanza. (Ereditato da Attribute.)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_pubmethodIsDefaultAttribute()

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.)

System_CAPS_pubmethodMatch(Object)

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.)

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.(Ereditato da Object.)

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object.)

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

Esegue il mapping di un set di nomi a un corrispondente set di identificatori di dispatch. (Ereditato da Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sui tipi per un oggetto, che possono essere utilizzate per ottenere informazioni sul tipo per un'interfaccia. (Ereditato da Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1). (Ereditato da Attribute.)

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

Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto. (Ereditato da Attribute.)

Nel modello di programmazione con attributi, la ImportAttribute viene utilizzata per dichiarare le importazioni o dipendenze, di una determinata parte. È possibile decorare una proprietà, un campo o un metodo. Durante la composizione, le importazioni della parte verranno compilate il CompositionContainer oggetto a cui appartiene la parte, tramite le esportazioni fornite a quel CompositionContainer oggetto.

Se un'importazione corrisponde a una determinata esportazione dipende principalmente dal confronto tra il nome del contratto e il tipo di contratto. In genere, non è necessario specificare uno di questi elementi quando si utilizza l'attributo import nel codice e verrà automaticamente dedotto dal tipo di membro decorato. Se l'importazione deve corrispondere a un'esportazione di un tipo diverso (ad esempio, una sottoclasse del tipo di membro decorato o un'interfaccia implementata da tale membro), quindi 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 è preferibile eseguire questa operazione tramite i metadati. Per ulteriori informazioni sui metadati, vedere PartMetadataAttribute.

Nell'esempio seguente vengono illustrate tre classi con membri decorati con il ImportAttribute, e tre le esportazioni che corrispondono a essi.

//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
Disponibile da 4.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 4.0

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: