예제 #1
0
        /// <summary>
        /// 定义类型切面
        /// </summary>
        /// <param name="componentType"></param>
        /// <returns></returns>
        public static IAspectExpression For(Type componentType)
        {
            var aspect = new SingleTypeExpression(componentType);

            Aspect.AspectRepository.Register(aspect.ToAspect());
            return(aspect);
        }
예제 #2
0
 public static SingleTypeExpression <int, TContext> WithOps <TContext>(this SingleTypeExpression <int, TContext> expr)
 {
     expr.AddBinary(new BinarySymbol("+", 1), (a, b) => a + b);
     expr.AddBinary(new BinarySymbol("-", 1), (a, b) => a - b);
     expr.AddBinary(new BinarySymbol("*", 2), (a, b) => a * b);
     expr.AddBinary(new BinarySymbol("/", 2), (a, b) => a / b);
     expr.AddUnary(new UnarySymbol("-"), i => - i);
     return(expr);
 }
예제 #3
0
    public override void PartTwo()
    {
        var expr = new SingleTypeExpression <long>(long.Parse);

        expr.AddBinary(new BinarySymbol("+", 2), (a, b) => a + b);
        expr.AddBinary(new BinarySymbol("*", 1), (a, b) => a * b);
        var sum = Input.Select(expr.Eval).Sum();

        WriteLn(sum);
    }