- PR -

プロパティ名の間接指定

1
投稿者投稿内容
豪雪地帯
常連さん
会議室デビュー日: 2004/06/08
投稿数: 34
投稿日時: 2004-12-24 21:02
お世話様です。

あるコントロールのプロパティ名とその値がペアとなっているような
list情報があるとします。
そのコントロールを動的に生成してインスタンス化する際、そのlist情報の
プロパティ名を用いて、各プロパティに値を設定したいのですが、
どの様な記述をすれば良いのでしょうか。
つまりプロパティ名を間接的に指定したいのです。

あるコントロールにどういうプロパティがあるかを全て取得し、
その各プロパティの値が何になっているかを取得するプログラム
が分かれば、いける様にも思いますが。

どちらにしても具体的な記述がわかりません。
よろしくお願いします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-12-25 00:37
リフレクションを使用すれば可能かと思います。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconReflectionOverview.asp
豪雪地帯
常連さん
会議室デビュー日: 2004/06/08
投稿数: 34
投稿日時: 2004-12-27 10:03
burton999さん、こんにちは。

リフレクションで出来そうですね。
勉強してみます。
ありがとうございました。
nak2k
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 86
投稿日時: 2004-12-29 22:33
コントロールのプロパティが対象の場合、使用目的によっては、
System.ComponentModel.PropertyDescriptor クラスを
使用したほうがいいかもしれません。
PropertyDescriptor の取得には、TypeDescriptor.GetProperties メソッド
を使用します。

最終的には内部でリフレクションが使用されているのですが、
リフレクションを活用した機能が色々と実装されているので
それらを独自に実装する手間が省けます。

たとえば、質問にあったlist情報を外部ファイルに保存しなければならない場合、
PropertyDescriptor.ShouldSerializeValue メソッドを使用することで、
保存するプロパティの数を最小限に抑える、などということができます。
豪雪地帯
常連さん
会議室デビュー日: 2004/06/08
投稿数: 34
投稿日時: 2005-01-05 14:12
k-nakさん、遅ればせながらコメントありがとうございます。
引用:

コントロールのプロパティが対象の場合、使用目的によっては、
System.ComponentModel.PropertyDescriptor クラスを
使用したほうがいいかもしれません。
PropertyDescriptor の取得には、TypeDescriptor.GetProperties メソッド
を使用します。


これから見てみます。
ただ、List情報の形式が既に決められているので、シリアライズ化メソッドは
使えないかも知れません。
1

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