我看了幾個地方,但似乎無法找到我正在尋找什麼。我正在製作一個WPF應用程序,使用C++/cli來混淆c#xmal。我有一個接口,我聲明我希望xaml能夠看到用c#編寫的DataContext,但是我在c#接口中聲明的是在我的C++/cli文件中實現的。我試圖找到一種方法來在c#中聲明一個枚舉,然後實際定義它在C++/cli中是什麼,但我遇到了問題。 (無論我宣佈在C#接口需要一個訪問,這可能是問題的一部分)c#到C++/cli枚舉聲明
我迄今試圖在C#接口,
Enum Days { get; }
在c
然後++/CLI
enum class days { Sun= 0, Mon, ...}
virtual property System::Enum^ Days
{ System::Enum^ get() { return days; } }
但是,在return語句中,它表示「類型名稱是不允許的」。我認爲這是因爲System :: Enum ^應該是來自枚舉的值,而不是創建的枚舉類型本身。是否有某種基類或所有枚舉類型繼承的東西,或者其他任何方式來執行我期望的操作?
C++ 11語言版本也採用了'enum class'。所以你實際上聲明瞭一個非託管的枚舉類型。它不能轉換爲System :: Enum。您必須使用前綴「public」或「private」來說服編譯器說您打算聲明一個託管枚舉。你必須返回一個值,而不是一個類型。既然你似乎想要返回一個類型,很可能你的方法被打破了。您的C#代碼也可以使用枚舉,並將其公開。或者相反。或者,也許你需要兩個組件。 –
我認爲它不起作用。我最終在C#命名空間中定義了枚舉,所以我可以在我的C++/cli中引用它。 –