Я хочу вызвать method1
в class1 dynamically
. Я не хочу напрямую использовать Prm class
. Как отправить p parameter dynamically
. Here это способ, но я could'nt управлятьМетод Invoke со сложным параметром динамически (C#)
namespace WindowsFormsApplicationMethodCall
{
public class Prm
{
public string p1 { get; set; }
public long p2 { get; set; }
}
public class Class1
{
public string Method1(Prm p)
{
return "Hello world";
}
}
}
использование:
private void button1_Click(object sender, EventArgs e)
{
var ass = Assembly.LoadFrom("abc.dll");
var business = ass.CreateInstance("WindowsFormsApplicationMethodCall.Class1");
var mInfo = business.GetType().GetMethod("Method1");
var anonymParameter = new { p1 = "", p2 = 2 };
mInfo.Invoke(business,new object[]{ anonymParameter});
//var res = mInfo.TolerantCast(new { p1 = "", p2 = 2 });
//var param = new Dictionary<string,object>();
//param.Add("p", result);
}
Я нашел эту ошибку: Объект типа <>f__AnonymousType0`2[System.String,System.Int32]
не может быть преобразовано в тип
должен создать параметр объекта же типа PRM этот код создать анонимный объект «вар anonymParameter = new {p1 = "", p2 = 2}; " –
C# /. Net - безопасный тип. Функции принимают только объекты Prm, поэтому вам нужно передать объект Prm. – thehennyy
Я знаю это. На самом деле у меня есть имена методов, классов и dll в виде строки. И есть параметры как Список. И я хочу динамически вызывать метод1. –