0

私は linq を使用して 2 つの同様のオブジェクトをマップしていますが、サブクラスがマップされず、GetProperties() でそれらが表示されないという問題があります。サブクラスはパブリックとしてマークされているため、このコードが機能しない理由が少しわかりません...他のメソッドの使用に関するアイデアや提案。事前にご協力いただきありがとうございます。

foreach (PropertyInfo pInfo in _WorkRequest.GetType().GetProperties()) 
{
 _WorkRequestV1.GetType().GetProperty(pInfo.Name).SetValue(_WorkRequestV1, pInfo.GetValue(_WorkRequest, null), null);
}

アップデート

これを調べた後、クラス ex 内でサブクラスを宣言するときに次のことに気付きました。

public Person myPerson; 

GetProperties() はPerson クラスを認識しませんが、追加すると

public Person myPerson {get;set;}

GetProperties()myPerson を認識します

最後に付け加えると

public Person myPerson = new Person()

GetProperties() は人を認識しませ

なぜ {get;set} が必要なのですか?

4

1 に答える 1

1

なぜこれが機能しないのかコードからはわかりませんが、あるオブジェクトのプロパティを別のオブジェクトにコピーするより良い方法があり、それはAutoMapperを使用することです。

できるよ:

Mapper.CreateMap<WorkRequest, WorkRequestV1>();
Mapper.Map(_WorkRequest, _WorkRequestV1);
于 2013-03-13T18:46:53.717 に答える