2011-09-14 55 views
0

我有兩個非託管班,在兩個不同的DLL:揭露非託管類型的託管代碼

class A 
{ 
public: 
void doSomething(); 
private: 
int x; 
} 

class B 
{ 
public: 
void doSomethingToAnA(A*); 
} 

,我想包裝他們無論是在託管C++,那麼自然:

ref class managedA 
{ 
public: 
void doSomething(); 
private: 
A* unmanagedA; 
} 

ref class managedB 
{ 
public: 
void doSomethingToAnA(managedA*); 
private: 
B* unmanagedB; 
} 

所以doSomethingToAnA (managedA *)應該如下所示:

void managedB::doSomethingToAnA(managedA* a) 
{ 
unmanagedB->doSomethingToAnA(a->unmanagedA); 
} 

但是,非託管A是私有的。我不想改變它的可見性或爲它創建一個getter,因爲然後C#用戶也將能夠看到它(這很奇怪),另外,這是錯誤的設計方式。 由於這些類位於不同的DLL中,因此我也不能使用私有的公開可見性。

有沒有一個很好的「教科書」解決這個問題?

回答