我想在class1 dynamically
中調用method1
。我不想直接使用Prm class
。如何發送p parameter dynamically
。 Here是一種方式,但我could'nt管理方法動態調用複雜參數(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名稱作爲字符串。並且有參數列表。我想動態地調用method1。 –