クラス内の構造体に対するリフレクション

tBase:構造体を持つクラス

 

’---フィルタ条件を作成

Dim flag As BindingFlags = BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.Static Or BindingFlags.FlattenHierarchy


'---構造体のインスタンスを生成(インスタンスからじゃないとフィールドが取得できない)
Dim inst  = Activator.CreateInstance(tBase.GetType().GetMember("構造体名")(0))

(*)構造体名が固定値でよいなら、インスタンスを作る必要はない

 ・GetType(TClass.構造体名).GetFields(flag)

 

’---取得した構造体のフィールド名を取得する例

Dim fields As FieldInfo() = inst.GetType.GetFields(flag)

Dim txt = fields.Where(Function(x) x.Name = prop.Name).Select(Function(x) x.GetValue(x)).FirstOrDefault