ネイティブ dll からエクスポートされたさまざまなクラスがあります。エクスポートされるクラスは、複数の純粋抽象クラス (インターフェース) から継承されます。dll は、それらがエクスポートする具象クラスが異なる抽象クラスから継承される可能性があるという点で異なります。ネイティブ dll は、C++/CLI ラッパーの LoadLibrary で動的にロードされます。dll の具体的なネイティブ クラスのクラス階層 (継承関係) を公開する方法はありますか。クラスを .NET のさまざまなインターフェイスとして使用できるようにします。
ネイティブ インターフェイス
class PrimaryAbstractClass
{
virtual void PrimaryMethod() = 0;
};
class SecondaryAbstractClass1
{
virtual void Method1() = 0;
};
class SecondaryAbstractClass2
{
virtual void Method2() = 0;
};
DLL 1
class ConcreteClass1: public PrimaryAbstractClass, public SecondaryAbstractClass1
{
virtual void PrimaryMethod();
virtual void Method1();
};
DLL 2
class ConcreteClass2: public PrimaryAbstractClass, public SecondaryAbstractClass2
{
virtual void PrimaryMethod();
virtual void Method2();
};
意図した C# の使用法 (疑似コード)
PrimaryAbstractClassWrapper pacw = new Dll1.PrimaryAbstractClassWrapper();
((SecondaryAbstractClass2)pacw).Method2();