请教高手,在利用反射时,如何来识别某个参数是个 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的?
解决方案 »
- 找不到microsoft office interop excel,求指教!!
- winform 日期选择
- Spread For .net Winform 4.0控件问题
- 求个算法
- 怎么用C#将服务器上的word(图和文字)读出来显示成网页的内容。
- 求Soket通讯相关资料
- 求大神给一个决解方案。100分求大神。
- c#如何实现copy目录到另一个目录下面(在线等待,谢谢)
- 在InitializeComponent里老报错!一下午了,就是没看出原因,!怪
- 如何让控件的某个属性在运行时只读
- 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
是一个可以省略的参数。