2008-09-25 6 views
7

J'ai l'interface suivante que j'essaie de rendre COM-visible. Lorsque j'essaie de générer la bibliothèque de types, elle n'aime pas le fait que ma classe d'implémentation dérive d'une classe générique.Est-il possible d'implémenter une interface COM avec une classe de génériques .NET?

Est-il possible d'utiliser une classe générique en tant que classe d'implémentation COM? (je sais que je pourrais écrire un emballage non générique et d'exportation à COM, mais cela ajoute une autre couche que je préfère faire sans.)

[ComVisible(true)] 
public interface IMyClass 
{ 
    ... 
} 

[ComVisible(true), ComDefaultInterface(typeof(IMyClass))] 
[ClassInterface(ClassInterfaceType.None)] 
public class MyClass : BaseClass<IMyClass>, IMyClass 
{ 
    ... 
} 

Message d'erreur:

Warning: Type library exporter encountered a type that derives 
from a generic class and is not marked as 
[ClassInterface(ClassInterfaceType.None)]. Class interfaces cannot 
be exposed for such types. Consider marking the type with 
[ClassInterface(ClassInterfaceType.None)] 
and exposing an explicit interface as the default interface to 
COM using the ComDefaultInterface attribute.

Répondre

5

Générique Les types et les types dérivés d'un type générique ne peuvent pas être exportés. Définissez ComVisible(false) sur votre type MyClass. Vous devez créer une implémentation de classe non générique ou utiliser uniquement l'interface.

Questions connexes