c# - Reflection and Setting Property? -


so, have object class inherited class. however, whenever try set child class invokemember method using reflection, says method/member doesn't exist. missing something?

namespace group {     public class person {         public guid personid { get; set; }         public string firstname { get; set; }          public void load(namevaluecollection fields) {              type classtype = this.gettype();               propertyinfo[] properties = classtype.getproperties();               foreach(propertyinfo property in properties)              {                  for(int x = 0; x < fields.count; x++)                  {                      if (fields.keys[x] != property.name) continue;                       classtype.invokemember(property.name, bindingflags.instance | bindingflags.setproperty, type.defaultbinder, this, new object[] { fields[x] });                      break;                  }              }        } }  namespace group {     public class vipperson : person { } } 

the following code calls above class:

function somemethod() {     namevaluecollection collection = new namevaluecollection();     collection.add("firstname", "mark");      vipperson person = new vipperson();     person.load(collection); } 

any why invokemember throwing error says property doesn't exist?

here's how using setvalue reading value out of xml file.

        //--- object properties         propertydescriptorcollection props = typedescriptor.getproperties(targetcomponent);          foreach (var xmlproperty in propertiesfromxml)         {             var propertyname = xmlproperty.name.tostring();             var propertydescriptor = props[propertyname];              if (propertydescriptor == null)             {                 // property not exist, create 1 anyways?             }             else             {                 propertydescriptor.setvalue(targetcomponent, convert.changetype(xmlproperty.value, propertydescriptor.propertytype));             }          } 

Comments