How to use MethodInfo.Invoke to set property value?

15,052

Solution 1

You can use the PropertyInfo.SetValue method.

object o;
//...
Type type = o.GetType();
PropertyInfo pi = type.GetProperty("Value");
pi.SetValue(o, 23, null);

Solution 2

If you are using .NET Framework 4.6 and 4.5, you can also use PropertyInfo.SetMethod Property :

object o;
//...
Type type = o.GetType();
PropertyInfo pi = type.GetProperty("Value");
pi.SetMethod.Invoke(o, new object[] {23});
Share:
15,052
David.Chu.ca
Author by

David.Chu.ca

Updated on June 30, 2022

Comments

  • David.Chu.ca
    David.Chu.ca almost 2 years

    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?

  • David.Chu.ca
    David.Chu.ca almost 15 years
    actually it should be: pi.SetValue(o, 23, null); ? not 0