Search code examples
c#reflectioninvokemethodinfo

Invoke Method from MethodInfo with Custom Class as Parameter


I have this scenario: One custom class (Customer) with some properties, like this:

public class Customer
{
    public int Handler { get; set; }
    public string Name { get; set; }
}

One custom class with the Method, like this:

public class CustomerMethods
{
    public static void Insert(Customer customer)
    {
        //Do Something...
    }
}

So, I will load a text file with some info, like class name, property name and property value. But, the real problem is, how can I invoke the Insert Method from CustomerMethods class and pass Customer class as parameter after set the values of Handler and Name properties?

Oh, I almost forget, I am trying to avoid conditionals, because I have 100+ classes. /o\ Ty all, if you need more info, just tell me plz...


Solution

  • I used only these strings to call static Insert method WindowsFormsApplication1.Form1+CustomerMethods     WindowsFormsApplication1.Form1+Customer     Insert

    Type customerMethodsType = Type.GetType("WindowsFormsApplication1.Form1+CustomerMethods");
    Type customerType = Type.GetType("WindowsFormsApplication1.Form1+Customer");
    object customerObject =  Activator.CreateInstance(customerType);
    
    customerType.GetProperty("Handler").SetValue(customerObject, 3, null);
    
    customerMethodsType.InvokeMember(
        "Insert",
        BindingFlags.Public | BindingFlags.InvokeMethod| BindingFlags.Static,
        null,
        null,
        new object[] { customerObject }
        );