Вызвать метод из MethodInfo с пользовательским классом в качестве параметра - PullRequest
1 голос
/ 31 января 2012

У меня есть такой сценарий: один пользовательский класс (Customer) с некоторыми свойствами, например:

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

Один пользовательский класс с методом, например:

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

Я загружу текстовый файл с некоторой информацией, такой как имя класса, имя свойства и значение свойства.Но реальная проблема заключается в том, как я могу вызвать метод Insert из класса CustomerMethods и передать класс Customer в качестве параметра после установки значений свойств Handler и Name?

О, я почти забыл, я пытаюсь избежатьусловно, потому что у меня более 100 классов./ o \ Ty all, если вам нужна дополнительная информация, просто скажите мне, плз ...

Ответы [ 2 ]

2 голосов
/ 31 января 2012
typeof(CustomerMethods).GetMethod(SomeName).Invoke(null, new Customer(...))

Тем не менее, вы должны попытаться изменить свой дизайн и избежать этого, если это возможно.

1 голос
/ 31 января 2012

Я использовал только эти строки для вызова статического метода вставки 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 }
    );
...