我如何将操作员分配给代表?
int a = 5;
int b = 2;
Func<int, int, int> operation = /* int.operator+ or int.operator- */;
int result = operation(a, b);
我知道三种方法:
Func<int, int, int> operation = (a, b) => a + b;
这一个包装成一个额外的函数调用。
Func<C, C, C> operation = (Func<C, C, C>)typeof(C).GetMethod("op_Addition").CreateDelegate(typeof(Func<C, C, C>));
这个很可怕,不适用于基元。
Expression<Func<C, C, C>> expression = (c, c2) => c + c2;
BinaryExpression binaryExpression = (BinaryExpression)expression.Body;
MethodInfo binaryExpressionMethod = binaryExpression.Method;
Func<C, C, C> operation = (Func<C, C, C>)binaryExpressionMethod.CreateDelegate(typeof(Func<C, C, C>));
这个更可怕,也不适用于基元。
有优雅的方法吗?
达令说
相关分类