“子”表达式中如何使用lambda表达式参数?我希望能够构建如下委托的表达式:FunccreateSomeType1=(args)=>{returnnewSomeType1((P1)args[0],(P2)args[1],(P3)args[2]);};我是手工制作表达式的新手,请原谅我这是一个相当简单的问题(或者我误解了什么)。我知道要创建具有正确类型的构造函数,我会这样做:varp1=Expression.Parameter(typeof(P1));varp2=Expression.Parameter(typeof(P2));varp3=Expression.Parameter(typeof(P3));varsomeType1Exp=Expression.New(constructorInfo,p1,p2,p3);然后我知道“外部”lambda,我认为,是这样声明的:Expression.Lambda(someType1Exp,Expression.Parameter(typeof(object[])));我不知道如何将参数从外部表达式“传递”到内部表达式,然后将其转换为正确的类型。对正确方向的任何提示表示赞赏。我在iPod上,所以现在不能给出一个完整的例子:但是:如果你需要,我很乐意做一个完整的例子(当我在PC上时)完整的例子:Type[]types=newType[]{typeof(int),typeof(float),typeof(string)};varconstructorInfo=typeof(SomeType).GetConstructor(类型);varparameters=types.Select((t,i)=>Expression.Parameter(t,"p"+i)).ToArray();varsomeType1Exp=Expression.New(constructorInfo,parameters);varinner=Expression.Lambda(someType1Exp,parameters);varargs=Expression.Parameter(typeof(object[]),"args");varbody=Expression.Invoke(inner,parameters.Select((p,i)=>Expression.Convert(Expression.ArrayIndex(args,Expression.Constant(i)),p.Type)).ToArray());varouter=Expression.Lambda>(body,args);varfunc=outer.Compile();object[]values={1,123.45F,"abc"};对象obj=func(值);.WriteLine(对象);或者作为单个表达式:以上是C#学习教程:如何在“sub”表达式中使用lambda表达式参数?如果分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注——Type[]types=newType[]{typeof(int),typeof(float),typeof(细绳)};varconstructorInfo=typeof(SomeType).GetConstructor(类型);varargs=Expression.Parameter(typeof(object[]),"args");varbody=Expression.New(constructorInfo,types.Select((t,i)=>Expression.Convert(Expression.ArrayIndex(args,Expression.Constant(i)),t)).ToArray());varouter=Expression.Lambda>(body,args);varfunc=外部。编译();object[]values={1,123.45F,"abc"};对象obj=func(值);控制台.WriteLine(obj);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: