- PR -

「既定の名前空間」の取得方法

1
投稿者投稿内容
ren
会議室デビュー日: 2007/07/23
投稿数: 3
投稿日時: 2007-07-23 22:36
お世話になります。
.NetFramework2.0(VS2005)、C#での開発です。

プロジェクトのプロパティから設定できる「既定の名前空間」を、
プログラムにて取得する方法は存在するのでしょうか。

埋め込みリソースを指定する際、
<既定の名前空間>.<フォルダ名>.<(.resourcesファイルに自動変換された後の)ファイル名>
でアクセスするのですが、<既定の名前空間>のリテラルを
ハードコーディングではなくプログラム上から取得したいのです。

ネットで調べた限りでは、そういった方法を見つけることができませんでした。
.NetFrameworkには、このような手段は用意されていないのでしょうか。

よろしくお願いします。
IIJIMAS
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 77
投稿日時: 2007-07-23 23:05
個人的には懐かしいです…

以前、同じ質問をGotDotNet Japan 掲示板にしました。

.NET開発 > ステップアップ.NET > 既定の名前空間についての質問です
http://www.microsoft.com/japan/msdn/community/gdn/ShowPost-31155.htm

Lady.BUG様にお答えをいただきました。

[ メッセージ編集済み 編集者: IIJIMAS 編集日時 2007-07-23 23:07 ]
ren
会議室デビュー日: 2007/07/23
投稿数: 3
投稿日時: 2007-07-23 23:26
IIJIMASさん、ご返答ありがとうございます。
ご提示いただいたURL、参照させていただきました。
結論としては「できない」ということらしいですね。

追加でご相談させてください。

そもそも何故困っているかというと、
問題の「埋め込みリソース取得」処理を
外部の独自フレームワーク内で行っているためです。
(アプリからはF/Wをプロジェクト参照)

複数機能をそれぞれ独立したプロジェクトで作成しており、
「既定の名前空間」もプロジェクトごとに異なるため、
“設計的にリテラル記述は無理”ということになってしまいます。

そもそも「既定の名前空間」とは、新規でクラス等を追加したときに
自動的に名前空間を付与してくれる、という便利機能に過ぎないのでしょうか。
もしそうであれば、既定の名前空間は「アプリケーション名」と同一にして、
クラスの名前空間は手で書き換えていく、といったアプローチをとろうと
思うのですが、こういった手法って問題ないでしょうか。

※この場合、F/WではAssembly.Getname()でアプリ名を取得。
アプリ名は既定の名前空間と同じ値(というルール)なので、
結果的にリソースを指し示すことができる。


ご助言いただけたら幸いです。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-07-24 00:36
引用:

そもそも「既定の名前空間」とは、新規でクラス等を追加したときに
自動的に名前空間を付与してくれる、という便利機能に過ぎないのでしょうか。



そうです。

引用:

そもそも何故困っているかというと、
問題の「埋め込みリソース取得」処理を
外部の独自フレームワーク内で行っているためです。
(アプリからはF/Wをプロジェクト参照)



フレームワーク内から直接的にアプリケーション管理下のリソースを取得するというのは、イマイチな設計な気がします。

リソース取得用のデリゲートやクラスインスタンスを与えるなど、いくらでも工夫できるんじゃないでしょうか。



[ メッセージ編集済み 編集者: 渋木宏明(ひどり) 編集日時 2007-07-24 00:39 ]
ren
会議室デビュー日: 2007/07/23
投稿数: 3
投稿日時: 2007-07-24 08:50
渋木宏明(ひどり)さん、ありがとうございます。

引用:
フレームワーク内から直接的にアプリケーション管理下のリソースを取得するというのは、イマイチな設計な気がします。



お客さんから提供されているフレームワークなので、作りを大幅に改編することができません。(多少のカスタマイズについては許可をもらっているのですが)


もう仕方が無いので、前回自分で提示した案で進めてみようと思います。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)