私は式ツリーとしてC#でBinaryExpressionをで立ち往生
Expression<Func<int, int, int>> Max = (p1,p2) => p1 > p2 ? p1:p2;
を実装したいとCondの私のどちらかが真/偽取得ではなくLeftExや条件は返す必要がありますRightExで
ParameterExpression LeftEx = Expression.Parameter(typeof(int), "p1");
ParameterExpression RightEx = Expression.Parameter(typeof(int), "p2");
BinaryExpression GroesserAls = Expression.GreaterThan(LeftEx, RightEx);
ConditionalExpression Cond = BinaryExpression.Condition(GroesserAls, LeftEx, RightEx);
Expression main = Cond.Test;
Expression<Func<int, int, bool>> Lam = Expression.Lambda<Func<int, int, bool>>(main,
new ParameterExpression[] { LeftEx, RightEx });
Console.WriteLine(Lam.Compile().Invoke(333, 1200));
を試してみました。
ドキュメントに何も見つかりませんでした。
ピーター
忘れないでください、あなたは常にリフレクターやILDASMを使用することができますがコンパイラがあなたのために生成する式ツリーコードを確認してください。 –