È possibile implementare un'interfaccia COM con una classe generics .NET?
-
02-07-2019 - |
Domanda
Ho la seguente interfaccia che sto cercando di rendere visibile COM. Quando provo a generare la libreria dei tipi non mi piace il fatto che la mia classe di implementazione derivi da una classe generica.
È possibile utilizzare una classe generica come classe di implementazione COM? (So ??che potrei scrivere un wrapper non generico ed esportarlo in COM, ma questo aggiunge un altro livello di cui preferirei fare a meno.)
[ComVisible(true)]
public interface IMyClass
{
...
}
[ComVisible(true), ComDefaultInterface(typeof(IMyClass))]
[ClassInterface(ClassInterfaceType.None)]
public class MyClass : BaseClass<IMyClass>, IMyClass
{
...
}
Messaggio di errore:
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.
Soluzione
I tipi generici che derivano da un tipo generico non possono essere esportati. Imposta ComVisible (false)
sul tuo tipo MyClass
. Dovrai creare un'implementazione di classe non generica o utilizzare solo l'interfaccia.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow