请教高手,在利用反射时,如何来识别某个参数是个 params 变量的问题。
例如:
public class cls2{
public void fnc1(object objArg, params string[] strParams){}
public void fnc2(object objArg, string[] strNomaul){}
} MothodeFnc1.Invoke(cls2, new object[]{ arg1, new string[]{...}}); MothodeFnc2.Invoke(cls2, new object[]{ arg1, new string[]{...}}); 在这里我想请教的是在调用Invoke之前如何识别fnc1的第2个参数strParams是params的?
例如:
public class cls2{
public void fnc1(object objArg, params string[] strParams){}
public void fnc2(object objArg, string[] strNomaul){}
} MothodeFnc1.Invoke(cls2, new object[]{ arg1, new string[]{...}}); MothodeFnc2.Invoke(cls2, new object[]{ arg1, new string[]{...}}); 在这里我想请教的是在调用Invoke之前如何识别fnc1的第2个参数strParams是params的?
解决方案 »
- C# 正则表达式截取问题。
- cmd 下执行adb 命令 中文 乱码
- 用SVN控管
- winform程序局域网连接的问题
- [初学]DataGrid中的一个基本问题
- DBNull.Value造成的问题,调试的结果同数据库调试不一致,麻烦大家看看
- 为什么 System.Type.GetType("System.Windows.Forms.TextBox")返回null
- datareader能读两个数据表的值吗?
- 調用vc的api dll文件的問題
- 请教一下各位 关于加密
- C/S与B/S
- Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolTy
Type type = obj.GetType();
PropertyInfo[] pi = typ.GetProperties();
foreach (PropertyInfo p in pi)
{
Type t= p.PropertyType;
}
new object[] { }
顺便说一下,MethodeInfo和ParameterInfo都找了一下,
就是没有判断被反射的参数是否是可以省略的办法。
Type type = obj.GetType();
foreach (System.Reflection.MethodInfo methodInfo in type.GetMethods())
{
foreach (System.Reflection.ParameterInfo paramInfo in methodInfo.GetParameters())
{
}
所以实际并不存在什么 params
同样都是传入一个数组的。
那么,有以下一个情况:
调用方:testInvoke(“a",“b",“c",“d");private void testInvoke(params object[] objParms){
这里,我要反射 cls2.fnc1
这时候在初始化 Invoke的第二个参数 object[] 时候
有没有什么好办法吗?
}
不过这很明显是编码的问题。
public void fnc1(object objArg, params string[] strParams)
{ }public void fnc1(object objArg, string[] strNomaul) { }这样的代码是编译不过的。但是,如果你要找出这样的含有params的string数组,和一个object参数,的确是有难度。抱歉,帮不上忙。
直接吧objParms传给cls2.fnc1的第二个参数不可以吗?
public void fnc1(object objArg, params string[] strParams) { } public void fnc1(object objArg, string[] strNomaul) { }这个只是一个比方,别介意。
问#10楼:怎么个直接法?难道说是这样:Invoke(?,objParms)
那么第一个参数放什么?
C#的管理机制里面我想应该有的,只是找了2,3天还是没有结果。
{
string[] obj = new string[objParms.Count - 1];
for (int i = 1; i <= obj.Count; i++) {
obj(i - 1) = objParms(i);
}
cls2 cls = new cls2();
cls.fnc1(objParms(0), obj);
}
代码是vb转的,我不了解C#...
我想知道的是:在执行反射某个方法之前,该方法的参数里面,是否存在 params 的参数。
也就是说:在执行 fnc1_Mothode.Invoke 的之前,我想预知它的第二个参数 strParams
是一个可以省略的参数。