问题描述
classClsTest{publicvoidTest<TFirst,TSecond,TReturn>(Func<TFirst,TSecond,TReturn>map){//....}}publicstaticvoidTest_Test(){ClsTesttest=newClsTest();//call1test.Test<int,int,int>((a,b)=>{returna+b;});//call2MethodInfomethodTest=test.GetType().GetMethod("Test").MakeGenericMethod(typeof(int),typeof(int),typeof(int));ArrayListplist=newArrayList();plist.Add(?);//这里methodTest.Invoke(test,plist.ToArray());}请问问号处要怎么写call2部分代码才能实现call1相同功能
解决方案
解决方案二:
methodTest.MakeGenericMethod(newType[]{int,int,int}).Invoke(newFunc<int,int,int>(...))
解决方案三:
plist.Add((Func<int,int,int>)((a,b)=>{returna+b;}));//这里
解决方案四:
plist.Add(newFunc<int,int,int>((x,y)=>x+y));
解决方案五:
引用2楼Forty2的回复:
plist.Add((Func<int,int,int>)((a,b)=>{returna+b;}));//这里
+1
时间: 2024-09-11 07:45:35