これは恥ずかしい質問ですが、ここ数時間すべてを試したような気がします。
次の属性を自分のプロパティに追加したいだけです
#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#プロジェクトからプロジェクトの参照を取得しようとすると、名前空間が欠落しているというエラーが表示されます。上記のeditor属性と#usingandusing namespaceをコメントアウトすると、すべて問題ありません。
何らかの理由で、MSDNで関連資料を見つけることができません。適切なドキュメントを指摘していただければ幸いです。
更新: C#プロジェクトは.NET 4クライアントプロファイルでした。これが、誤解を招く名前空間がないことを示すエラーが発生した理由です。ターゲットフレームワークを.NET4に変更すると、問題が解決しました。