_objMethod = _objAssembly.CreateInstance(_sClassName, false, BindingFlags.Default , null,
new object[] {txtBuildParam.Text.Split(',')}, null, null);
这句话一直报错找不到构造函数然尔如果改成调用不需要参数的构造函数却可以通过.
其中参数 txtBuildParam.Text 的内容是: "add,true,slag,true,50.5,100"
带参的构造函数是: public ClsBOFAngle(string sID1, object o1, string sID2, object o2, double dIni, int iSpeed)
请大家帮忙 .谢谢.
还是没有解决,我用提动态编译,得到的Assembly,似乎不能用Activator .CreateInstance 我这段代码报错,是因为构造函数参数的类型有 double, 和int ,
而我所传的参数 txtBuildParam.Text.Split(',') 全为string,能有好的办法转换一下吗?
而我所传的参数 txtBuildParam.Text.Split(',') 全为string,能有好的办法转换一下吗?
string[] str = s1.Split(',');
_objMethod = _objAssembly.CreateInstance(_sClassName, false, BindingFlags.Default , null,
new object[] { str[0], new object[] { bool.Parse(str[1]) }, str[2], new object[] { bool.Parse(str[3]) }, double.Parse(str[4]), int.Parse(str[5]) }, null, null);传5个对应类型的参数进去,你再加上相应的异常处理。
不用CreateInstance。应该可以。
public ClsBOFAngle(string sID1, object o1, string sID2, object o2, double dIni, int iSpeed)很明显参数不全是string,所以string[]的参数系统找不相匹配的 函数签名解决方法,自己构造object[] 参数传递。可参考13楼的代码
参数对象.公用参数生成方法("我的参数") //至于如何解析参数在对象内部自己完成
构造函数(参数对象基类 obj)//这样把变化封装在外面就可以统一调用, 修改也只是修改自己继承过来的参数对象方法。
第二种方式,采用IOC容器动态的直接注入方法,比如你可以使用Unity这个小型的ioc容器类 使用方式
Container
.RegisterInstance<参数对象>(参数对象实例) //把参数对象实例注入容器
.Resolve<要生成的对象类型>();//调用生成实例,这里实际等同于 new 要生成的对象类型(参数对象)
在执行CreateInstance,他不会自动会根据你所给的参数去匹配最合适的构造函数吗?但是这个类的构造函数只有一个,所有我想问问有没有方法知道 构造函数的参数类型???