C# で 2 つの複雑なオブジェクトを比較し、2 つの違いを含む Dictionary を作成しようとしています。
私がそのようなクラスを持っている場合:
public class Product
{
public int Id {get; set;}
public bool IsWhatever {get; set;}
public string Something {get; set;}
public int SomeOtherId {get; set;}
}
したがって、1つのインスタンス:
var p = new Product
{
Id = 1,
IsWhatever = false,
Something = "Pony",
SomeOtherId = 5
};
そして別:
var newP = new Product
{
Id = 1,
IsWhatever = true
};
これらの違いを得るために、私はこれを含むことをしています:
var oldProps = p.GetType().GetProperties();
var newProps = newP.GetType().GetProperties();
// snip
foreach(var newInfo in newProps)
{
var oldVal = oldInfo.GetValue(oldVersion, null);
var newVal = newInfo.GetValue(newVersion,null);
}
// snip - some ifs & thens & other stuff
興味深いのはこの行です
var newVal = newInfo.GetValue(newVersion,null);
上記のオブジェクトの例を使用すると、この行はSomeOtherId
(bools & DateTimes & whathaveyou についても同じ話) のデフォルト値 0 を提供します。
私が探しているのはnewProps
、オブジェクトで明示的に指定されたプロパティのみを含める方法です。したがって、上記の例ではId
、IsWhatever
. 私はBindingFlags
無駄に遊んだ。
これは可能ですか?それを行うためのよりクリーンな/より良い方法、または問題を解決するためのツールはありますか?
ありがとう。