2009-05-27 115 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") 
相關問題