Возможно, вы вообще не захотите оборачивать InstrumentList.
Просто используйте одну из стандартных коллекций .NET (к которой вы можете получить доступ из C ++ / CLI) и создайте коллекцию ваших оболочек Instrument.Я использую ObservableCollection с тех пор, как хочу привязать данные к своим коллекциям.
Пример:
public ref class MyManagedType
{
public:
MyManagedType(MyNativeType* pObject) { m_pObject = pObject };
private:
MyNativeType* m_pObject;
}
Затем создайте управляемую коллекцию следующим образом:
ObservableCollection<MyManagedType^>^ managedCollection = gcnew ObservableCollection<MyManagedType^>();
Наконецдобавьте объекты в коллекцию:
managedCollection->Add(gcnew MyManagedType(pNativeObject));
Немного усилий для синхронизации собственных и управляемых коллекций, но это хорошо работает.