gpt4 book ai didi

c# - 动态调用具有复杂参数的方法 (C#)

转载 作者:太空宇宙 更新时间:2023-11-03 23:22:50 25 4
gpt4 key购买 nike

我想调用 method1class1 dynamically .我不想使用 Prm class直接地。如何发送p parameter dynamically . Here是一种方式,但我无法管理

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”创建实例并改为使用它

var anonymParameter = new { p1 = "", p2 = 2 };

to

var anonymParameter  = ass.CreateInstance("WindowsFormsApplicationMethodCall.Prm");
anonymParameter.GetType().GetProperty("p1").SetValue(anonymParameter,"");
anonymParameter.GetType().GetProperty("p2").SetValue(anonymParameter,2);

关于c# - 动态调用具有复杂参数的方法 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34788930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com