Exemple #1
0
 /// <summary>
 /// 获取下一流程
 /// </summary>
 /// <param name="nextHandler"></param>
 /// <returns></returns>
 private ExtractExamAbstractHandler GetNextHandler(HandlerEnum nextHandler)
 {
     return(nextHandler switch
     {
         HandlerEnum.A => new HandlerA(),
         HandlerEnum.B => new HandlerB(),
         HandlerEnum.C => new HandlerC(),
         _ => throw new ArgumentOutOfRangeException(nameof(nextHandler), nextHandler, null)
     });
Exemple #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="InboxRulesetDto" /> class.
 /// </summary>
 /// <param name="id">id (required).</param>
 /// <param name="inboxId">inboxId (required).</param>
 /// <param name="scope">scope (required).</param>
 /// <param name="action">action (required).</param>
 /// <param name="target">target (required).</param>
 /// <param name="handler">handler (required).</param>
 /// <param name="createdAt">createdAt (required).</param>
 public InboxRulesetDto(Guid id = default(Guid), Guid inboxId = default(Guid), ScopeEnum scope = default(ScopeEnum), ActionEnum action = default(ActionEnum), string target = default(string), HandlerEnum handler = default(HandlerEnum), DateTime createdAt = default(DateTime))
 {
     this.Id      = id;
     this.InboxId = inboxId;
     this.Scope   = scope;
     this.Action  = action;
     // to ensure "target" is required (not null)
     this.Target    = target ?? throw new ArgumentNullException("target is a required property for InboxRulesetDto and cannot be null");
     this.Handler   = handler;
     this.CreatedAt = createdAt;
 }
Exemple #3
0
        /// <summary>
        /// 以命名约定扫描
        /// </summary>
        private void NamingConventionsScan()
        {
            var type = this.EventType;

            if (type.Name.EndsWith("CreateEvent"))
            {
                this.Handle = HandlerEnum.Add;
            }

            if (type.Name.EndsWith($"{nameof(HandlerEnum.Remove)}Event"))
            {
                this.Handle = HandlerEnum.Remove;
            }

            if (type.Name.EndsWith($"{nameof(HandlerEnum.Update)}Event"))
            {
                this.Handle = HandlerEnum.Update;
            }
        }
Exemple #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="StorageAttachmentGoogleStorage" /> class.
 /// </summary>
 /// <param name="handler">What handler module to use (required).</param>
 /// <param name="settings">Settings for the Google Storage account (required).</param>
 public StorageAttachmentGoogleStorage(HandlerEnum handler = default(HandlerEnum), Object settings = default(Object))
 {
     // to ensure "handler" is required (not null)
     if (handler == null)
     {
         throw new InvalidDataException("handler is a required property for StorageAttachmentGoogleStorage and cannot be null");
     }
     else
     {
         this.Handler = handler;
     }
     // to ensure "settings" is required (not null)
     if (settings == null)
     {
         throw new InvalidDataException("settings is a required property for StorageAttachmentGoogleStorage and cannot be null");
     }
     else
     {
         this.Settings = settings;
     }
 }
Exemple #5
0
        /// <summary>
        /// 将<seealso cref="ILimitRegistrationBuilder.RegistrationBuilder"/>中所有未被定义处理方式和ModelType的并
        /// 使用<paramref name="predicate"/>筛选后的类型都指定为<paramref name="handler"/>
        /// </summary>
        /// <param name="limitRegistration">受限的构建者</param>
        /// <param name="handler">处理方式</param>
        /// <returns>返回一个受限的构建者</returns>
        public static ILimitRegistrationBuilder Mapping(this ILimitRegistrationBuilder limitRegistration, HandlerEnum handler, Func <Type, bool> predicate)
        {
            var maps = limitRegistration.RegistrationBuilder
                       .Maps
                       .Where(s => s.ModelType == null &&
                              s.Handle == HandlerEnum.None);
            List <Map> mapList = new List <Map>();

            if (predicate == null)
            {
                mapList.AddRange(maps);
            }
            else
            {
                mapList.AddRange(maps.Where(s => predicate.Invoke(s.EventType)));
            }

            mapList.ForEach(map =>
            {
                map.Handle    = handler;
                map.ModelType = limitRegistration.ModelType;
            });

            return(limitRegistration);
        }
Exemple #6
0
 /// <summary>
 /// 将<seealso cref="ILimitRegistrationBuilder.RegistrationBuilder"/>中所有未被定义处理方式和ModelType的的都指定为<paramref name="handler"/>
 /// </summary>
 /// <param name="limitRegistration">受限的构建者</param>
 /// <param name="handler">处理方式</param>
 /// <returns>返回一个受限的构建者</returns>
 public static ILimitRegistrationBuilder Mapping(this ILimitRegistrationBuilder limitRegistration, HandlerEnum handler)
 {
     return(limitRegistration.Mapping(handler, null));
 }
Exemple #7
0
 /// <summary>
 /// 指定接下来的映射是以<typeparamref name="TModel"/>为ModelType的
 /// </summary>
 /// <typeparam name="TModel">模型类型</typeparam>
 /// <param name="limitRegistrationBuilder">受限的构建者</param>
 /// <returns>返回一个受限的构建者</returns>
 public static ILimitRegistrationBuilder Mapping <TEvent>(this ILimitRegistrationBuilder limitRegistrationBuilder, HandlerEnum handler) where TEvent : IEvent
 {
     limitRegistrationBuilder.RegistrationBuilder.Mapping(limitRegistrationBuilder.ModelType, typeof(TEvent), handler);
     return(limitRegistrationBuilder);
 }
Exemple #8
0
        /// <summary>
        /// 指定<paramref name="model"/>和<paramref name="event"/>以<paramref name="handler"/>的方式映射处理
        /// </summary>
        /// <param name="builder">注册构建者</param>
        /// <param name="model">模型类型</param>
        /// <param name="event">事件类型</param>
        /// <param name="handler">处理方式</param>
        /// <returns>返回注册构建者</returns>
        public static IRegistrationBuilder Mapping(this IRegistrationBuilder builder, Type model, Type @event, HandlerEnum handler)
        {
            var registration = builder as RegistrationBuilder;

            registration.Add(new Map(model, @event, handler));
            return(registration);
        }
Exemple #9
0
 /// <summary>
 /// 映射<typeparamref name="TModel"/>和<typeparamref name="TEvent"/>并以<paramref name="handler"/>方式进行处理
 /// </summary>
 /// <typeparam name="TModel"></typeparam>
 /// <typeparam name="TEvent"></typeparam>
 /// <param name="builder"></param>
 /// <param name="handler"></param>
 /// <returns></returns>
 public static IRegistrationBuilder Mapping <TModel, TEvent>(this IRegistrationBuilder builder, HandlerEnum handler) where TModel : class where TEvent : IEvent
 {
     builder.Mapping(typeof(TModel), typeof(TEvent), handler);
     return(builder);
 }
Exemple #10
0
 /// <summary>
 /// 创建一个拥有<seealso cref="Map.EventType"/>和<seealso cref="Map.Handle"/>的Map
 /// </summary>
 /// <param name="eventType">事件类型</param>
 /// <param name="handle">处理方式</param>
 public Map(Type eventType, HandlerEnum handle) : this(eventType)
 {
     this.Handle = handle;
 }
Exemple #11
0
 /// <summary>
 /// 创建一个完整的Map对象
 /// </summary>
 /// <param name="modelType">模型类型</param>
 /// <param name="eventType">事件类型</param>
 /// <param name="handle">处理方式</param>
 public Map(Type modelType, Type eventType, HandlerEnum handle)
 {
     this.ModelType = modelType;
     this.EventType = eventType;
     this.Handle    = handle;
 }
Exemple #12
0
 public ModelAttribute(string typeName, HandlerEnum @enum) : this(typeName)
 {
     this.Handle = @enum;
 }