C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: EnumにTypeConvertorで設定した日本語名を取得


(過去ログ 117 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■68838 / inTopicNo.1)  EnumにTypeConvertorで設定した日本語名を取得
  
□投稿者/ むぅ (7回)-(2013/11/21(Thu) 14:07:44)

分類:[C#] 

VS2010 C# .net3.5 Windows7 32/64bit

お世話になります。

PropertyGridに選択したオブジェクトのプロパティを日本語に表示するため、
以下のサイトを参考にTypeConvertorで実装しています。

●PropertyGridコントロールに表示されるプロパティ名を変更するには? 
http://www.atmarkit.co.jp/fdotnet/dotnettips/291pgridjapan/pgridjapan.html

プロパティと設定された値の日本語表記を別のListViewに登録するため、取得したいです。

プロパティ名の取得はできました。

private string GetName<T>(T obTarget)
{
//Publicメンバを取得する
MemberInfo[] members = typeof(T).GetProperties
(BindingFlags.Public |
BindingFlags.Instance |
BindingFlags.DeclaredOnly);

AttributeCollection attributes = TypeDescriptor.GetProperties(obTarget)[members[nIndex].Name].Attributes;
PropertyDisplayNameAttribute NameAttr = (PropertyDisplayNameAttribute)attributes[typeof(PropertyDisplayNameAttribute)];
//NameAttr.PropertyDisplayName で日本語名称を取得できる。

設定された値ですが、Enum型のデータを設定するものがあり、以下のように定義しています。

[TypeConverter(typeof(EnumDisplayNameConverter))]
public enum EnumBool
{
[PropertyDisplayName("Yes")]
val0 = 0,
[PropertyDisplayName("No")]
val1 = 1
}

上記の日本語表記を取得するためにどのようなコードを記載すればよろしいでしょうか。

どちら様かご教示のほど、よろしくお願いしますm(__)m。



引用返信 編集キー/
■68839 / inTopicNo.2)  Re[1]: EnumにTypeConvertorで設定した日本語名を取得
□投稿者/ Hongliang (126回)-(2013/11/21(Thu) 14:22:10)
列挙体の型のTypeオブジェクト.GetField(メンバ名)から、
Attribute.GetCustomAttribute(FieldInfoインスタンス, typeof(PropertyDisplayNameAttribute))
引用返信 編集キー/
■68840 / inTopicNo.3)  Re[2]: EnumにTypeConvertorで設定した日本語名を取得
□投稿者/ むぅ (8回)-(2013/11/21(Thu) 15:52:50)
Hongliang 様
お世話になります。

さっそくの回答、ありがとうございます。
目的の機能を実装できました。

                 以上
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -