掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
変数を変数で処理したい (ID:144284)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
えーっと,一点訂正。 >> リフレクションを使えばできますが, VBはObject型を渡そうとするとRuntimeHelpers.GetObjectValueを挟むために,単純にはできないですね。 C#では可能なので,簡単にできるものと思っていましたが……。 まぁ,マーカーインターフェースを一個用意してImplementsするだけなので,たいした手間ではないですが,ちょっと気持ち悪いです。 > コードの書き方がわかりません。 次のどちらかの方法になります。 ・System.Type.InvokeMemberメソッドを使う ・System.Type.GetFieldメソッドまたはSystem.Type.GetFieldsメソッドでSystem.Reflection.FieldInfoを取得して,System.Reflection.FieldInfo.SetValueメソッドを呼び出す どちらにしても,Boxingのことを考えないと構造体では失敗します。 普通に考えればSystem.Object型の変数に代入して設定がすべて終わってから元に戻せばよいのですが,上記の理由からVBではその方法では失敗します。 Interface IMarkerForStructureReflection End Interface こんなインターフェースを用意し,Strcはこれを実装します。 次に,Strc型の変数をIMarkerForStructureReflection型の変数に代入します。 その後,SetValueではIMarkerForStructureReflection型の変数を引数に渡します。 最後に,IMarkerForStructureReflection型の変数をStrc型の変数に書き戻します。 ちなみに,自動変数は変数名から値を取得することはできないので,素直に配列を使いましょう。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.