プロが教える店舗&オフィスのセキュリティ対策術

環境:
WindowsXP
VisualStudio2008 Professional
言語:
VB.NET

あるクラスのプロパティへ
Public Property Prop1 As Integer/Prop2/Prop3/・・・・と設定し、ゲットやセットするのにループしていれる方法はあるのでしょうか。
例えば・・・

For I As Integer = 1 To 40
  Console.WriteLine(Prop & I)
Next

若しくは

For Each Property As Property型??(Object??) In Properties??(プロパティコレクション??)
  Console.WriteLine(Property.Value??)
Next

という感じです。

フォームなどのコントロールで、複数のコントロールへ同じ内容を入れ込むときに使ったことはあるのですが、プロパティでも同じことができるのかなと思い質問してみました。

A 回答 (1件)

たとえば、Button1コントロールのプロパティとその値は、以下のような感じで表示できたと思います。



Dim pi As System.Reflection.PropertyInfo
For Each pi In Me.Button1.GetType().GetProperties()
MsgBox(pi.Name + "=" + pi.GetValue(Me.Button1, Nothing).ToString())
Next
    • good
    • 0
この回答へのお礼

ありがとうございます。
なるほど・・・GetTypeでGetPropertiesですね。
Riflectionをつかうのは知りませんでした。
まだまだ勉強不足ですね。。。

ヒントをいただいて色々と調べた結果以下でクラスのプロパティで設定した値を取得できました。
※SampleControlClassを生成しているのは、元々取得したいプロパティが入っているSampleClassがオブジェクトを生成しないMustInheritとしているので、継承しているSampleControlClassをオブジェクト生成して入れ込んでます。

Dim SCClass As New SampleClassControl
Dim ClsType As Type = GetType(SampleClass)
Dim Prop() As PropertyInfo = ClsType.GetProperties

For Each props As PropertyInfo In Prop
  Console.WriteLine(CType(props.GetValue(SCClass, Nothing), Integer))
Next
ちなみにセットもついでにできました。
For Each props As PropertyInfo In Prop
  props.SetValue(SCClass, I, Nothing)
  I += 1
Next

一応、期待通りにことは運んだんですが、他にもありますかね?

お礼日時:2009/08/12 15:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!