Qualificazione di tipi .NET per l'interoperabilitàQualifying .NET Types for Interoperation

Se si vuole esporre i tipi contenuti in un assembly alle applicazioni COM, tenere presenti i requisiti di interoperabilità COM in fase di progettazione.If you intend to expose types in an assembly to COM applications, consider the requirements of COM interop at design time. Rispettando le linee guida seguenti, è possibile ottenere una facile integrazione tra i tipi gestiti (classi, interfacce, strutture ed enumerazioni) e i tipi COM:Managed types (class, interface, structure, and enumeration) seamlessly integrate with COM types when you adhere to the following guidelines:

  • Le classi devono implementare le interfacce in modo esplicito.Classes should implement interfaces explicitly.

    Anche se l'interoperabilità COM fornisce un meccanismo per generare automaticamente un'interfaccia contenente tutti i membri della classe e i membri della relativa classe di base, è decisamente preferibile fornire interfacce esplicite.Although COM interop provides a mechanism to automatically generate an interface containing all members of the class and the members of its base class, it is far better to provide explicit interfaces. L'interfaccia generata automaticamente è detta interfaccia di classe.The automatically generated interface is called the class interface. Per informazioni, vedere Introduzione all'interfaccia della classe.For guidelines, see Introducing the class interface.

    Per incorporare le definizioni di interfaccia nel codice, è possibile usare Visual Basic, C# e C++ invece del linguaggio di definizione dell'interfaccia (IDL, Interface Definition Language) o di soluzioni equivalenti.You can use Visual Basic, C#, and C++ to incorporate interface definitions in your code, instead of having to use Interface Definition Language (IDL) or its equivalent. Per informazioni dettagliate sulla sintassi, vedere la documentazione relativa al linguaggio.For syntax details, see your language documentation.

  • I tipi gestiti devono essere pubblici.Managed types must be public.

    Solo i tipi pubblici di un assembly vengono registrati ed esportati nella libreria dei tipi.Only public types in an assembly are registered and exported to the type library. Di conseguenza, solo i tipi pubblici sono visibili in COM.As a result, only public types are visible to COM.

    I tipi gestiti espongono ad altro codice gestito funzionalità che potrebbero non essere esposte a COM.Managed types expose features to other managed code that might not be exposed to COM. Non vengono ad esempio esposti ai client COM i costruttori con parametri, i metodi statici e i campi costanti.For instance, parameterized constructors, static methods, and constant fields are not exposed to COM clients. Poiché inoltre il runtime esegue il marshalling dei dati in entrata e in uscita da un tipo, è possibile che i dati vengano copiati o trasformati.Further, as the runtime marshals data in and out of a type, the data might be copied or transformed.

  • Metodi, proprietà, campi ed eventi devono essere pubblici.Methods, properties, fields, and events must be public.

    Anche i membri dei tipi pubblici devono essere pubblici per essere visibili in COM.Members of public types must also be public if they are to be visible to COM. È possibile limitare la visibilità di un assembly, di un tipo pubblico o dei membri pubblici di un tipo pubblico applicando l'oggetto ComVisibleAttribute.You can restrict the visibility of an assembly, a public type, or public members of a public type by applying the ComVisibleAttribute. Per impostazione predefinita, tutti i membri e i tipi pubblici sono visibili.By default, all public types and members are visible.

  • I tipi devono avere un costruttore pubblico predefinito per essere attivati da COM.Types must have a public default constructor to be activated from COM.

    I tipi pubblici gestiti sono visibili in COM.Managed, public types are visible to COM. Senza un costruttore pubblico predefinito (un costruttore senza argomenti), tuttavia, i client COM non possono creare il tipo.However, without a public default constructor (a constructor with no arguments), COM clients cannot create the type. I client COM possono comunque usare il tipo se viene attivato in un altro modo.COM clients can still use the type if it is activated by some other means.

  • I tipi non possono essere astratti.Types cannot be abstract.

    Né i client COM né i client .NET possono creare tipi astratti.Neither COM clients nor .NET clients can create abstract types.

Quando si esegue l'esportazione in COM, la gerarchia di ereditarietà di un tipo gestito viene appiattita.When exported to COM, the inheritance hierarchy of a managed type is flattened. Anche il controllo delle versioni varia tra ambiente gestito e ambiente non gestito.Versioning also differs between managed and unmanaged environments. I tipi esposti a COM non hanno le stesse caratteristiche di controllo delle versioni degli altri tipi gestiti.Types exposed to COM do not have the same versioning characteristics as other managed types.

Vedere ancheSee Also

ComVisibleAttribute
Esposizione di componenti .NET Framework a COMExposing .NET Framework Components to COM
Introduzione all'interfaccia della classeIntroducing the class interface
Applicazione di attributi di interoperabilitàApplying Interop Attributes
Preparazione di un assembly per COMPackaging an Assembly for COM