2 Stimmen

Hinzufügen einer COM-Referenz mit Visual Studio benennt Schnittstellen in Interop Assembly um

Ich füge eine C++ COM dll als Verweis auf ein C#-Projekt (Visual Studio 2008). VS fügt den Verweis jedoch die generierte Interop-Bibliothek spiegelt nicht die Benennung in der ursprünglichen typelib (.idl) Definition. Hier ist, wie meine Bibliotheksdefinition aussieht:

[
   uuid(...),
   helpstring("MyLib")
]
library MyLib
{    
    [
        uuid(...),
        helpstring("MyCom CoClass")
    ]
    coclass MyComCoClass
    {
        [default] interface IMyInterface;
        interface IMyInheritedInterface;
        interface IMyBaseInterface;
    };
}

IMyInterface erbt also von IMyInheritedInterface, das seinerseits von IMyBaseInterface erbt. Ich möchte alle diese Schnittstelle zur Verfügung, wenn diese COMs .dll hinzugefügt wird. In der Interop-Assembly, die VS für die obige Typelib generiert, wird IMyInterface zu MyInterface. Warum und gibt es eine Möglichkeit, dies zu umgehen?

Danke

2voto

Mattias S Punkte 4568

Der Typelib-Importer tut dies, wenn eine Schnittstelle die Standardschnittstelle für eine Coklasse ist und nur von dieser Coklasse verwendet wird.

Ein Workaround besteht also darin, eine weitere Dummy-Coklasse zu Ihrer Typelib hinzuzufügen und IMyInterface zur Standardschnittstelle für diese Klasse zu machen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X