Как преобразовать определяемый пользователем неуправляемый тип в управляемый тип?

У меня есть тест, который я пишу в MSTest, управляемый C ++, и я пытаюсь протестировать неуправляемый класс. В частности, я пытаюсь использовать класс PrivateObject для вызова частного метода.

Это код, который у меня есть на данный момент:

CUnmanagedType foo;
PrivateObject privateFoo = gcnew PrivateObject( foo );

CString strFromFoo = privateFoo.Invoke( "ARandomPrivateMethod" );

Когда я компилирую, я получаю сообщение об ошибке, что foo не может быть преобразован в System :: Type ^. Я пробовал делать следующее:

PrivateObject privateFoo = gcnew PrivateObject( (gcnew System::Type^(foo)) );

но это не сработает, потому что System :: Type ^ - абстрактный тип. Любые идеи?

Я рассмотрел эти вопросы, но они использовали предопределенные типы, а не определенные пользователем: Как преобразовать неуправляемую двойную строку в управляемую строку? Преобразование между управляемыми и неуправляемыми типами в C ++?


person Jared    schedule 27.05.2009    source источник


Ответы (1)


Конструктору PrivateObject требуется имя типа, а не экземпляр. Для этого вам необходимо сделать следующее:

PrivateObject privateFoo = gcnew PrivateObject( "CUnmanagedType" )
person Jared    schedule 27.05.2009