2013-03-11 76 views
0

有其正試圖這樣通信的兩個單獨的項目:
我有以下用C++ CLI是否有可能從C#中的本地C++類創建一個變量?

public class Data{ 
    public: 
    int x; 
} 

本地類通過導入我的意思是,在我的C#項目添加引用到C++ CLI項目。
在另一邊,我在導入這個C++ CLI項目到我的C#項目,並在C#我想做的事:

Data k = new Data() //It's ok till here 
int b = k.x; //The field x is not visible here ! 

有沒有辦法強迫C#或C++ CLI分享領域和方法?
編輯:另外C#假設class data作爲struct

+0

我不確定你的意思是「導入到你的C#項目」。 _one project_中不能有C#和C++ CLI。你的意思是你在_one solution_中引用C#項目中的CLI_assembly_嗎? – 2013-03-11 19:00:24

+0

@DStanley我編輯了我的答案,請再次檢查。 – 2013-03-11 19:03:52

回答

1

我想你會需要使它成爲ref class

public ref class Data{ 
    public: 
    int x; 
} 

C#不能用現在的方式構造Data。它不在託管堆上。 ref將使其顯示在託管堆上。如果你想Data保持不受管理,你將不得不寫一個包裝。

+0

是的,我可以做到這一點,但正如你看到它是一個土着班。我的回答也是大膽的。我不能在那裏使用託管類。 – 2013-03-11 19:07:25

+0

你能否介紹一下如何編寫包裝? – 2013-03-11 19:08:22

+0

@Mahdi然後我擔心你不能這樣互動。 – 2013-03-11 19:08:25

相關問題