tags:

views:

565

answers:

2

I have a class with a property Value like this:

public class MyClass {
   public property var Value { get; set; }
   ....
}

I want to use MethodInfo.Invoke() to set property value. Here are some codes:

object o;
// use CodeDom to get instance of a dynamically built MyClass to o, codes omitted
Type type = o.GetType();
MethodInfo mi = type.GetProperty("Value");
mi.Invoke(o, new object[] {23}); // Set Value to 23?

I cannot access to my work VS right now. My question is how to set Value with a integer value such as 23?

A: 

You can do that using PropertyInfo class from System.Reflection namespace.

AB Kolan
+5  A: 

You can use the PropertyInfo.SetValue method.

object o;
//...
Type type = o.GetType();
PropertyInfo pi = type.GetProperty("Value");
pi.SetValue(o, 23, null);
CMS
actually it should be: pi.SetValue(o, 23, null); ? not 0
David.Chu.ca
Yep, typo fixed...
CMS