- - PR -
namespaceの独自定義について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-01-25 22:09
VC++.NET において名前空間を独自に定義する
方法、特に2、3の階層(?)になったもの に対する方法をご教示ください。 namespace A { namespace B { namespace C { public __gc class MyClass ... }}} というやり方になるのでしょうか? ただこれをFormに対してやると、 デザイナでフォームのビジュアルな編集が できなくなってしまいます。 見当違い、ご容赦ください。よろしくお願い致します。 | ||||
|
投稿日時: 2005-01-28 09:31
再問合せ(補足説明)をさせて頂きます。
未だ .NET 見習中で是非、情報を頂ければと思っております。 実現したいことは、 ・複数のアプリケーションを通じて系統立った名前空間を 定義したい、ということで、 .NET Framework SDK ドキュメント−「名前空間の名前付け のガイドライン」に示されているように、 CompanyName.TechonologyName[.Feature][.Design] といった書式で、独自の(自社用の)名前空間を設けたい ものです。 ・別の言い方で申しますと、各アプリケーションにおいて “ルート名前空間”を定義したいものです。 質問としては、VC++.NET において ・namespace A { namespace B { namespace C { public __gc class MyClass ... }}} という記述により上を実現することが適当かどうか。 (他に方法があるかどうか) ・Windowsフォームアプリケーションプロジェクトを生成した 際に、標準で作成される Form1.h に対して、上の書式を 適用すると、フォームデザイナでの編集が出来なくなる ことをどのように解決したら良いか。 ・そもそも名前空間定義に関する全般的な理解を誤って いないかどうか。 といったところです。 また今時点で私の把握している状況として、 [VB.NET の場合] Namespace ステートメントを多重に用いる方法は試して いないのですが、VB.NET の場合はそもそも、プロジェクト のプロパティにて“ルート名前空間”が定義できるので、 本質問にあたらず、独自の名前空間が定義できます。 [VC#.NET の場合] VC++.NET では、namespace 宣言文にて namespace A::B { ... が出来ない様子(?) ですが、 VC#.NET では namespace A.B {... ができるようで、さらに Form1.cs に namespace A.B { namespace C { ... といった書き方を加えても、 フォームデザイナは問題なく利用できます。 VC++.NET ではどのように対処すべきなのかを模索して おります。ご教示よろしくお願い致します。 | ||||
|
投稿日時: 2005-01-28 13:33
以下のスレッド
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=15019&forum=7 でも同様の質問が挙げられているのを検索してみて知りました。 とりあえず強引な実現策を考えてみましたのでご報告致します。 真っ当な方法とは思えないもので、 フォームデザイナの制約(?)をかいくぐる手でしかないのかなと思います。 1a. 別途ヘッダーファイル(仮に namespace_decl.h)を準備し、 階層化したい名前空間の定義を、中身を空っぽで宣言する (以下の1行) namespace A { namespace B { namespace C {}}} 1b. 上記ヘッダファイルにて、名前空間のエイリアスを利用して "A::B::C" を意味するエイリアスを宣言する namespace ABC = A::B::C; 2a. Form1.h 内の冒頭で、上のヘッダファイルをインクルード: #include "namespace_decl.h" 2b. Form1.h 内の namespace は1階層のみとし、 上のヘッダファイル内で定義したエイリアス名を利用する: namespace ABC { public __gc class Form1 : public System::Windows::Forms::Form { ... “まともな”方法をご存知の方がおられましたら、 是非ご教示願いたいと思います。 | ||||
|
投稿日時: 2006-12-25 14:40
こんにちは。
このたび、VC++2005で開発しているのですが、本件と同様の問題にぶつかりました。 結局本件の対処方法はありましたでしょうか?ご存知の方おられませんか? | ||||
|
投稿日時: 2006-12-25 16:29
ないと思います。 私は、クラス ライブラリ以外では、複合名前空間は使わないことにしています。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1