Partager via


Exposition de composants du .NET Compact Framework au modèle COM

Mise à jour : novembre 2007

Vous pouvez exposer des composants .NET Compact Framework à du code natif, mais il existe des différences dans cette interopérabilité par rapport au .NET Framework complet.

Exposition de composants managés

Vous pouvez fournir des composants .NET Compact Framework managés aux applications natives. Le processus implique les tâches suivantes :

  • Concevez vos types managés tout en prenant en compte la programmation COM. Par exemple, n'utilisez pas de types génériques.

  • Définissez les fonctionnalités que vous souhaitez exposer dans une interface managée et laissez votre objet managé implémenter cette interface. Les procédures suivantes sont recommandées :

    • Utilisez les attributs GUID, InterfaceType et ComVisible pour votre interface managée.

    • Utilisez l'attribut ClassInterface(ClassInterfaceType.None) sur votre objet managé.

  • Créez des définitions natives de vos types managés.

  • Passez votre objet managé au code natif comme interface COM. Vous pouvez alors appeler des fonctions managées implémentées par votre objet managé à partir du code natif à l'aide de l'interface COM.

Différences du .NET Compact Framework

Pour appeler des fonctions .NET Compact Framework managées à partir du code natif, vous devez tout d'abord utiliser le runtime pour marshaler une interface managée ou un délégué au code natif. Cela signifie que vous devez toujours démarrer en code managé (avec un fichier exécutable managé) afin d'exposer des composants managés au code natif.

L'interopérabilité suivante avec le code natif n'est pas prise en charge par le .NET Compact Framework :

  • L'utilisation d'un outil d'inscription d'assembly, tel que Regasm.exe, pour les clients COM afin d'utiliser un composant managé comme classe COM.

  • Activation de types managés à partir de COM.

  • Hébergement du runtime à partir de code natif.

  • Hébergement des contrôles ActiveX. Le .NET Compact Framework ne prend pas en charge la classe AxHost et vous ne pouvez pas utiliser Microsoft Visual Studio 2005 et le concepteur pour apparenter un contrôle ActiveX à votre formulaire managé. Toutefois, étant donné la prise en charge de COM Interop dans le .NET Compact Framework, l'infrastructure existe pour générer votre propre hôte de conteneur ActiveX.

  • Initialisation de COM pour utiliser des threads cloisonnés.

  • Génération automatique des interfaces de classe. Vous devez encapsuler les fonctionnalités que vous aimeriez exposer au code natif dans une interface explicite.

  • Génération automatique des GUID. Vous devez donner un guid explicite à chaque interface afin de l'exposer au code natif.

Attributs au moment du design pour les composants managés exposés

Vous pouvez fournir des attributs au moment du design pour exposer des composants managés à COM. Le .NET Compact Framework prend en charge un sous-ensemble des attributs disponibles dans le .NET Framework complet, notamment :

Voir aussi

Autres ressources

Interopérabilité dans le .NET Compact Framework