2012-11-28 57 views
0

這是一個令人尷尬的問題,但我覺得我過去幾個小時都試過了。什麼是[編輯器(typeof(FolderNameEditor),typeof(UITypeEditor))]的C++/CLI版本?

我只想補充以下我的財產

#using <System.Drawing.dll> 
#using <System.Design.dll> 
... 
using namespace System::Drawing::Design; 
using namespace System::Configuration; 
using namespace System::ComponentModel; 
using namespace System::Windows::Forms::Design; 
... 

[Editor(typeof(FolderNameEditor), typeof(UITypeEditor))] 
property System::String^   DefaultWorkingDirectory; 

首先屬性,我想,因爲它是和編譯器說:「非法使用類型(FolderNameEditor)的。

現在,我想這

[Editor(Type::GetType("System.Windows.Form.Design.FolderNameEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"), 
     Type::GetType("System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"))] 

但它說,非法屬性參數。

如果我下面的C++/CLI項目編譯

[Editor("System.Windows.Form.Design.FolderNameEditor", "System.Drawing.Design.UITypeEditor")] 

但每當我試圖從一個C#項目獲得該項目的參考,我得到一個錯誤說的命名空間缺失。如果我註釋掉編輯器屬性和#using並使用上面的命名空間,那麼一切都很好。

出於某種原因,我無法在MSDN中找到相關材料,如果您可以指出適當的文檔,將不勝感激。

更新: C#項目是.NET 4客戶端配置文件,這就是爲什麼我得到錯誤指示缺少命名空間這是誤導的原因。將目標框架更改爲.NET 4解決了這個問題。

回答

3

相當於typeof()的C++/CLI是::typeid。試試這個:

[Editor(FolderNameEditor::typeid, UITypeEditor::typeid)] 
+0

感謝您的回答。實際上,我也已經嘗試了你的,但是我得到一個錯誤,說C#項目中引用CLI項目中缺少名稱空間。感覺像'#using 是導致問題的原因。但不知道爲什麼。 –

相關問題