1

これが可能かどうかはわかりませんが、これを達成する方法はありますか?

このクラスを考えると:

class A
{
    public String B {get;set;}
    public String C {get;set;}
    public String D {get;set;}
}

A をインスタンス化し、V1、V2、V3 をそれぞれ B、C、D に割り当てます

Dictionary\Matrix\ を含む他の構造が必要です

B:V1
C:V2
D:V3

できればサードパーティのライブラリを使用しないでください

4

4 に答える 4

2
var a = new A{B = "V1", C = "V2", D = "V3"};

var dictionary = a.GetType()
                  .GetProperties()
                  .ToDictionary(prop => prop.Name, 
                                prop => prop.GetValue(a));
于 2013-05-30T12:37:00.400 に答える
0

これは単なるサンプルであり、フィールドのタイプが正しいことなどを確認するために、より防御的なコードを追加する必要があることに注意してください...

リフレクションを使用した簡単な方法:

var a = new A();
.
.  fill in a.B... etc
.
.
Dictionary<String, String> dict = 
               a.GetType()
                .GetFields()
                .ToDictionary(k => k.Name, v => v.GetValue(a).ToString())

GetFields () はFieldInfo [] 配列を返すので、フィールドが定義されているなど、他のことを最初に確認できます。

于 2013-05-30T12:43:15.900 に答える