2009-05-27 128 views
0

我有一个测试,我正在写MSTest,这是托管C++,我试图测试一个非托管类。具体来说,我试图使用PrivateObject类来调用私有方法。如何将用户定义的非托管类型转换为托管类型?

这是我到目前为止的代码:

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

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

当我编译我得到一个错误foo是不是可转换到System ::类型^。我已经尝试做以下事情:

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

但这不起作用,因为System :: Type ^是一种抽象类型。有任何想法吗?

我已经看了这些问题,但是他们使用预先定义的类型,而不是用户定义的: How to convert a unmanaged double to a managed string? Conversion between managed and unmanaged types in C++?

回答

1

的PrivateObject构造想要一个类型名称,而不是一个实例。为此,您需要执行以下操作:

PrivateObject privateFoo = gcnew PrivateObject("CUnmanagedType") 
相关问题