Interopérabilité à l'aide de types génériques

Le modèle COM ne prend pas en charge le concept des types génériques. Par conséquent, les types génériques ne peuvent pas être utilisés directement pour COM Interop.

Actions non prises en charge

Les actions suivantes ne sont pas prises en charge et échoueront avec une erreur E_NOINTERFACE :

  • Accès aux interfaces génériques à partir de COM.

  • Accès aux interfaces de classe pour les classes non génériques dérivées de classes génériques.

  • Génération d'interfaces de classe pour les classes génériques. Par exemple, l'interface _MyGenericType ne peut pas être générée pour la classe MyGenericType<T>.

Actions prises en charge

Vous pouvez accéder à une classe générique de manière indirecte à l'aide d'une interface de base non générique. Considérons par exemple le type suivant :

[C#]

class MyClass <T> : IMyClass, IEnumerable<int>
{
   …
}

Les clients COM peuvent appeler des instances de ce type à l'aide de l'interface IMyClass, mais les appels à _MyClass, _MyClass <T> ou IEnumerable<T> échoueront.

Voir aussi

Référence

Génériques (guide de programmation C#)

Autres ressources

Interopération avec du code non managé

Génériques (extensions du composant C++)