c# - How to iterate properties of two objects dynamically -


i have 2 object of same class, want update p2 fields are in dirty list. far managed write following code struggling value of p1 properties. object should pass here parameter getvalue method.

person p1 = new person(); p1.firstname = "test"; person p2 = new person();  var alldirtyfields = p1.getalldirtyfields(); foreach (var dirtyfield in alldirtyfields) {   p2.gettype()     .getproperty(dirtyfield)     .setvalue(p1.gettype().getproperty(dirtyfield).getvalue()); }       _context.updateobject(p2); _context.savechanges(); 

thanks in advance.

did know don't need retrieve property each object?

type metadata common object of whole type.

for example:

// firstly, dirty property informations! ienumerable<propertyinfo> dirtyproperties = p2.gettype().getproperties(bindingflags.instance | bindingflags.public)               .where               (                    property => alldirtyfields.any                    (                        field => property.name == field                    )               );  // then, iterate whole property informations, give // "obj" getvalue/setvalue first argument references "p2" or "p1" follows: foreach(propertyinfo dirtyproperty in dirtyproperties) {                  dirtyproperty.setvalue(p2, dirtyproperty.getvalue(p1));  } 

check first parameter of propertyinfo.getvalue(...) , propertyinfo.setvalue(...) object want or set value of whole property.


Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -