gpt4 book ai didi

c++ - [Editor(typeof(FolderNameEditor), typeof(UITypeEditor))] 的 C++/CLI 版本是什么?

转载 作者:行者123 更新时间:2023-11-28 00:52:05 25 4
gpt4 key购买 nike

这是一个令人尴尬的问题,但我觉得我在过去几个小时里尝试了一切。

我只想在我的属性中添加以下属性

 #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 和 using 命名空间,一切都很好。

由于某些原因,我在MSDN中找不到相关资料,如果你能指出合适的文档,将不胜感激。

更新: C# 项目是 .NET 4 客户端配置文件,这就是为什么我收到错误指示缺少命名空间的误导性错误的原因。将目标框架更改为 .NET 4 解决了问题。

最佳答案

typeof() 等效的 C++/CLI 是 ::typeid。试试这个:

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

关于c++ - [Editor(typeof(FolderNameEditor), typeof(UITypeEditor))] 的 C++/CLI 版本是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13595441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com