リフレクションを使って構造体のプロパティに値をセットする方法です。
クラスと同じように書いてはうまくいかなかったのでメモ。
■ 参照情報(答え)
ここを見ればすべてが解決します。
■ リンクをクリックするのが面倒な方へ
クラスと同じように書くと期待通りに行かない
Sample s = new Sample(); var type = typeof(Sample); var p = type.GetProperty("PropA"); p.SetValue(s, "value"); Console.WriteLine(s.PropA); // 結果は null 期待通りにならない struct Sample { public string PropA { get; set; } }
期待通りの結果にする方法
構造体を Box 化します
Sample s = new Sample(); var type = typeof(Sample); var p = type.GetProperty("PropA"); object o = (object)s; p.SetValue(o, "value"); var s2 = (Sample)o; Console.WriteLine(s.PropA); // 結果は null Console.WriteLine(s2.PropA); // 結果は value 期待通り struct Sample { public string PropA { get; set; } }
ちょっとつらいですね。