2010-08-18 9 views
6

J'ai une méthode avec un paramètre par défaut:Comment exporter des types génériques vers COM? Bibliothèque de type exporteder rencontré une instance de type générique dans une signature

void Test(int? iRange = null); 

Lorsque vous essayez d'exposer ma classe à COM, je reçois un avertissement:

type exportateur bibliothèque rencontré une instance de type générique dans une signature. Le code générique ne peut pas être exporté vers COM. Est-il possible à certains comment exposer cette méthode?

Édition Désolé, je pense que cela a à voir avec le paramètre nullable (pas le paramètre par défaut) J'ai copié incorrectement la signature de la méthode d'origine.

+0

Votre question sur les paramètres par défaut ou les types génériques ou les deux? –

+0

Mon erreur ... le paramètre aurait dû être "int? IRange", pas "int iRange". Le problème est avec le type nullable, qui est un générique – Jeremy

Répondre

9

Je suis tombé sur quelque chose comme ça il y a quelques années, COM ne supporte pas les génériques et donc tout ce que vous exposez à COM doit être sans générique.

Dans ce cas, "int? IRange" est simplement un raccourci pour "Nullable <int> iRange" et en tant que tel provoque l'erreur. Vous devrez peut-être trouver un autre moyen d'exprimer ce que vous utilisez null pour exprimer. Vous pouvez ajouter un autre argument ou utiliser une valeur inutilisée de iRange (0, -1 et int.MinValue me viennent à l'esprit en tant que possibilités - je recommanderais de fournir la valeur en const si vous choisissez cette option).

Questions connexes