我有一个测试,我在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 ^是一种抽象类型。有什么想法吗?
我看过这些问题,但是他们使用了预定义的类型,而不是用户定义的类型: How to convert a unmanaged double to a managed string? Conversion between managed and unmanaged types in C++?
答案 0 :(得分:1)
PrivateObject构造函数需要typename,而不是实例。为此,您需要执行以下操作:
PrivateObject privateFoo = gcnew PrivateObject( "CUnmanagedType" )