Inoltro del tipo (C++/CLI)

L'inoltro del tipo consente di spostare un tipo da un assembly (assembly A) a un altro assembly (assembly B) in modo che non sia necessario ricompilare i client che fanno uso dell'assembly A.

Windows Runtime

Questa funzionalità non è supportata in Windows Runtime.

Common Language Runtime

L'esempio di codice seguente illustra come usare l'inoltro del tipo.

Sintassi

#using "new.dll"
[assembly:TypeForwardedTo(type::typeid)];

Parametri

Nuovo
Assembly in cui si sta spostando la definizione del tipo.

type
Tipo la cui definizione si sta spostando in un altro assembly.

Osservazioni:

Dopo che un componente (assembly) viene fornito e usato dalle applicazioni client, è possibile usare l'inoltro del tipo per spostare un tipo dal componente (assembly) in un altro assembly e fornire il componente aggiornato (e qualsiasi assembly aggiuntivo richiesto) e le applicazioni client continueranno a funzionare senza necessità di ricompilazione.

L'inoltro del tipo funziona solo per i componenti a cui fanno riferimento applicazioni esistenti. Quando si ricompila un'applicazione, devono esserci i riferimenti agli assembly appropriati per tutti i tipi usati nell'applicazione.

Quando si inoltra un tipo (tipo A) da un assembly, è necessario aggiungere l'attributo TypeForwardedTo per tale tipo, nonché un riferimento a un assembly. L'assembly cui si fa riferimento deve contenere uno degli elementi seguenti:

  • La definizione per il tipo A.

  • Un attributo TypeForwardedTo per il tipo A, nonché un riferimento a un assembly.

Ecco alcuni tipi che è possibile inoltrare:

  • classi di riferimento

  • classi di valore

  • enum

  • interfaces

Non è possibile inoltrare i tipi seguenti:

  • Tipi generici

  • Tipi nativi

  • Tipi annidati (se si vuole inoltrare un tipo annidato, è necessario inoltrare il tipo che lo contiene)

È possibile inoltrare un tipo a un assembly creato in qualsiasi linguaggio destinato a Common Language Runtime.

Se quindi un file di codice sorgente usato per creare l'assembly A.dll contiene una definizione di tipo (ref class MyClass) e si vuole spostare tale definizione di tipo nell'assembly B.dll, è necessario:

  1. Spostare la definizione del tipo MyClass in un file di codice sorgente usato per compilare B.dll.

  2. Compilare l'assembly B.dll.

  3. Eliminare la definizione del tipo MyClass dal codice sorgente usato per compilare A.dll e sostituirla con quanto segue:

    #using "B.dll"
    [assembly:TypeForwardedTo(MyClass::typeid)];
    
  4. Compilare l'assembly A.dll.

  5. Usare A.dll senza ricompilare le applicazioni client.

Requisiti

Opzione del compilatore: /clr