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:
Spostare la definizione del tipo
MyClass
in un file di codice sorgente usato per compilare B.dll.Compilare l'assembly B.dll.
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)];
Compilare l'assembly A.dll.
Usare A.dll senza ricompilare le applicazioni client.
Requisiti
Opzione del compilatore: /clr