DOBON.NET DOBON.NETプログラミング掲示板過去ログ

リソースを列挙したい

環境/言語:[XP,C#,2.0]
分類:[.NET]

プロジェクトに追加されたリソースは
Properties.Resources.hogehoge;
のように参照できますが
リソースを列挙することは可能でしょうか?
リソースの種類は問いません。
環境はVS2005、C#です。よろしくお願いします。

http://www.microsoft.com/japan/msdn/netframework/programming/bcl/faq/SystemResourcesFAQ.aspx
この辺を参考にしてみたのですが欲しい情報が得られませんでした。
> リソースを列挙することは可能でしょうか?

リフレクションを使うくらいしか手は無さそうですね。
■No19602に返信(渋木宏明(ひどり)さんの記事)
>>リソースを列挙することは可能でしょうか?
>
> リフレクションを使うくらいしか手は無さそうですね。
>

渋木宏明(ひどり)さんレスありがとうございます。
リフレクションのサンプルなどを漁ってトライしてみたのですが
まだうまくいきません^^;
でも仰るようにこの方法でいけそうな感じはしています。
本件とりあえず解決と致しますが
具体的なソースコードなどできましたら補足させて頂きます。
ありがとうございました。
解決済み!
> リフレクションのサンプルなどを漁ってトライしてみたのですが
> まだうまくいきません^^;

具体的に、どの辺が問題でしょうか?

Properties.Resources クラスが公開する、リソースを取得できる *かもしれない* 全プロパティの列挙は

foreach (PropertyInfo info in typeof(Properties.Resources).GetProperties(BindingFlags.NonPublic|BindingFlags.Static|BindingFlags.GetProperty))
{
System.Diagnostics.Debug.WriteLine(info.Name + " (" + info.PropertyType + ")");
}

で出来ます。

ただし、これにはリソース取得用以外のプロパティもいくつか含まれてしまいます。

「リソース取得用のプロパティであること」を示す属性が付いているわけでもないので、リソース取得用のプロパティとそうでないプロパティを確実に振り分けるのは困難です。

せいぜい、戻り値の型を見て「Bitmap を返すということは、リソースを返すプロパティだろう」という具合に「見なし」するしかなさそうです。

DOBON.NET | プログラミング道 | プログラミング掲示板