アイデアは、コードを複製せずに再利用したいということです。以下では、UnManagedB は UnmanagedA から派生しています。以下に示すように、両方の構造体に対応するマネージド ラッパーがあります。ManagedB の ManagedA のプロパティを再利用できるように、ManagedA から ManagedB を派生させたいと考えています。問題は、両方のクラスがアンマネージ オブジェクトへの独自のポインターを持っていることです。派生したアンマネージド オブジェクトだけが必要で、すべてのプロパティで UnManagedB ポインターを使用する必要があります。これを行う方法はありますか?
struct UnManagedA {
unsigned int size;
};
struct UnManagedB:UnManagedA {
int length;
int width;
};
public ref class A : public System::IDisposable {
public:
A();
!A();
~A();
property System::UInt32 Size {
System::UInt32 get();
void set(System::UInt32 value);
}
internal:
UnmanagedA* GetUnmanaged() { return obj1; }
private:
UnmanagedA* obj1;
};
public ref class B : public System::IDisposable, public A {
public:
B();
!B();
~B();
property System::UInt32 Length {
System::UInt32 get();
void set(System::UInt32 value);
}
property System::UInt32 Width {
System::UInt32 get();
void set(System::UInt32 value);
}
internal:
UnmanagedB* GetUnmanaged() { return obj2; }
private:
UnmanagedB* obj2;
};