0

これは恥ずかしい質問ですが、ここ数時間すべてを試したような気がします。

次の属性を自分のプロパティに追加したいだけです

 #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に変更すると、問題が解決しました。

4

1 に答える 1

3

に相当する C++/CLItypeof()::typeid. これを試して:

[Editor(FolderNameEditor::typeid, UITypeEditor::typeid)]
于 2012-11-28T00:02:55.703 に答える