Example #1
0
 public LoginInfo(string lastIP, Emptyable<DateTime> lastTime, int total)
 {
     this.LastIP = lastIP;
     this.LastTime = lastTime;
     this.Total = total;
     this.OnConstructed();
 }
Example #2
0
 public BrandAccessory(string name, short accessoryNum, Emptyable <DateTime> setupDate)
 {
     this.Name         = name;
     this.AccessoryNum = accessoryNum;
     this.SetupDate    = setupDate;
     this.OnConstructed();
 }
Example #3
0
 public AnimalAccessory(string name, short accessoryNum, Emptyable <DateTime> setupDate, AnimalDoor door, AnimalEye eye)
 {
     this.Name         = name;
     this.AccessoryNum = accessoryNum;
     this.SetupDate    = setupDate;
     this.Door         = door;
     this.Eye          = eye;
     this.OnConstructed();
 }
 public BlockResultVoid Complete(object overrideResult)
 {
     return(new BlockResultVoid
     {
         Target = new BlockResultTarget
         {
             FlowTarget = BlockFlowTarget.Complete,
             OverrideResult = Emptyable.Create(overrideResult)
         }
     });
 }
 public BlockResultVoid Retry(object overrideInput)
 {
     return(new BlockResultVoid
     {
         Target = new BlockResultTarget
         {
             FlowTarget = BlockFlowTarget.Retry,
             OverrideInput = Emptyable.Create(overrideInput)
         }
     });
 }
 public BlockResultVoid Goto(int index, object overrideInput)
 {
     return(new BlockResultVoid
     {
         Target = new BlockResultTarget
         {
             FlowTarget = BlockFlowTarget.Goto,
             TargetIndex = index,
             OverrideInput = Emptyable.Create(overrideInput)
         }
     });
 }
 public BlockResultVoid Goto(string tag, object overrideInput)
 {
     return(new BlockResultVoid
     {
         Target = new BlockResultTarget
         {
             FlowTarget = BlockFlowTarget.Goto,
             TargetTag = tag,
             OverrideInput = Emptyable.Create(overrideInput)
         }
     });
 }
 public BlockResultVoid Skip(int i, object overrideInput)
 {
     return(new BlockResultVoid
     {
         Target = new BlockResultTarget
         {
             FlowTarget = BlockFlowTarget.Skip,
             TargetIndex = i,
             OverrideInput = Emptyable.Create(overrideInput)
         }
     });
 }
Example #9
0
        public void EmptyTest()
        {
            Emptyable.Register(typeof(IEmptyA <>), typeof(EmptyB <>)); //? 接口注册。
            Emptyable.Register(typeof(EmptyA <>), typeof(EmptyC <>));  //? 抽象类注册。

            var i  = Emptyable.Empty <int>();
            var e  = Emptyable.Empty <DateTimeKind>();
            var d  = Emptyable.Empty <DateTime>();
            var s  = Emptyable.Empty <string>();
            var c  = Emptyable.Empty <CopyTest>();                //? 默认构造函数。
            var nc = Emptyable.Empty <NonPublicConstructor>();    //? 私有构造函数。
            var na = Emptyable.Empty <HasArgumentsConstructor>(); //? 有参数构造函数。

            var ng  = Emptyable.Empty <IEmptyA <int> >();
            var ng2 = Emptyable.Empty <EmptyA <string> >();
        }
Example #10
0
 public void RemoveDeliveryDate(Emptyable <DateTime> deliveryDate)
 {
     _DeliveryDates.Remove(deliveryDate);
 }
Example #11
0
 public void AddDeliveryDate(Emptyable <DateTime> deliveryDate)
 {
     _DeliveryDates.Add(deliveryDate);
 }
 private static void SetLiveTime(Animal animal, Emptyable <DateTime> liveTime)
 {
     liveTime        = liveTime.Value.AddDays(10);
     animal.LiveTime = liveTime;
 }
Example #13
0
 public LoginInfoEmpty()
     : base(string.Empty, Emptyable<DateTime>.CreateEmpty(), 0)
 {
     this.OnConstructed();
 }
Example #14
0
        /// <inheritdoc />
        protected override void StartupCore(MethodCallExpression node)
        {
            switch (node.Method.Name)
            {
            case MethodCall.Count when node.Arguments.Count == 2:
            case MethodCall.LongCount when node.Arguments.Count == 2:
                writer.Write("COUNT");
                writer.OpenBrace();
                writer.Write("CASE WHEN ");

                VisitCondition(node);

                writer.Write(" THEN 1 ELSE 0 END");
                writer.CloseBrace();
                break;

            case MethodCall.Count when node.Arguments[0].NodeType == ExpressionType.Parameter:
            case MethodCall.LongCount when node.Arguments[0].NodeType == ExpressionType.Parameter:

                writer.Write("COUNT(1)");

                break;

            case MethodCall.Count:
            case MethodCall.LongCount:

                writer.Write("COUNT");
                writer.OpenBrace();
                writer.Write("CASE WHEN ");

                Visit(node.Arguments[0]);

                writer.Write(" THEN 1 ELSE 0 END");
                writer.CloseBrace();

                break;

            case MethodCall.Sum when node.Arguments.Count == 2 && node.Arguments[0].NodeType == ExpressionType.Parameter:
            case MethodCall.Max when node.Arguments.Count == 2 && node.Arguments[0].NodeType == ExpressionType.Parameter:
            case MethodCall.Min when node.Arguments.Count == 2 && node.Arguments[0].NodeType == ExpressionType.Parameter:
            case MethodCall.Average when node.Arguments.Count == 2 && node.Arguments[0].NodeType == ExpressionType.Parameter:

                writer.Write(node.Method.Name == MethodCall.Average ? "AVG" : node.Method.Name.ToUpper());

                writer.OpenBrace();

                Visit(node.Arguments[1]);

                writer.CloseBrace();

                break;

            case MethodCall.Sum when node.Arguments.Count == 2:
            case MethodCall.Max when node.Arguments.Count == 2:
            case MethodCall.Min when node.Arguments.Count == 2:
            case MethodCall.Average when node.Arguments.Count == 2:

                writer.Write(node.Method.Name == MethodCall.Average ? "AVG" : node.Method.Name.ToUpper());

                writer.OpenBrace();
                writer.Write("CASE WHEN ");

                Visit(node.Arguments[0]);

                writer.Write(" THEN ");

                Visit(node.Arguments[1]);

                writer.Write(" ELSE ");

                var returnType = node.Method.ReturnType;

                if (!returnType.IsValueType || returnType.IsNullable())
                {
                    writer.Null();
                }
                else if (returnType == Types.DateTime)
                {
                    writer.Parameter("date_utc_base", UtcBase);
                }
                else if (returnType == Types.DateTimeOffset)
                {
                    writer.Parameter("date_offset_utc_base", new DateTimeOffset(UtcBase));
                }
                else
                {
                    writer.Parameter($"{returnType.Name.ToUrlCase()}_default", Emptyable.Empty(node.Method.ReturnType));
                }

                writer.Write(" END");

                writer.CloseBrace();

                break;

            case MethodCall.Any when node.Arguments.Count == 1 && node.Arguments[0].NodeType == ExpressionType.Parameter:
                writer.BooleanTrue();
                break;

            case MethodCall.Any when node.Arguments.Count == 1:
                writer.Write("CASE ");

                writer.Write("MAX");

                writer.OpenBrace();
                writer.Write("CASE WHEN ");

                Visit(node.Arguments[0]);

                writer.Write(" THEN 1 ELSE 0 END");

                writer.CloseBrace();

                writer.Write(" WHEN 1 THEN ");

                writer.BooleanTrue();

                writer.Write(" ELSE ");

                writer.BooleanFalse();

                writer.Write(" END");
                break;

            case MethodCall.Any when node.Arguments.Count == 2:
            case MethodCall.All when node.Arguments.Count == 2:

                writer.Write("CASE ");

                writer.Write(node.Method.Name == MethodCall.Any ? "MAX" : "MIN");

                writer.OpenBrace();
                writer.Write("CASE WHEN ");

                VisitCondition(node);

                writer.Write(" THEN 1 ELSE 0 END");

                writer.CloseBrace();

                writer.Write(" WHEN 1 THEN ");

                writer.BooleanTrue();

                writer.Write(" ELSE ");

                writer.BooleanFalse();

                writer.Write(" END");

                break;

            case MethodCall.Sum:
            case MethodCall.Max:
            case MethodCall.Min:
            case MethodCall.Average:
                throw new DSyntaxErrorException($"分组中函数“{node.Method.Name}”需指定计算属性!");

            default:
                throw new DSyntaxErrorException($"分组中函数“{node.Method.Name}”不被支持!");
            }
        }
 internal EventHandlerBlockBase(string tag, TInput stackInput, TState state, Emptyable <Tin> input, IStackEvents <TOperationEvent> stackEvents)
     : base(tag, stackInput, state, stackEvents)
 {
     Input = input;
 }