/// <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) });
/// <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; }
/// <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; } }
/// <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; } }
/// <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); }
/// <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)); }
/// <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); }
/// <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); }
/// <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); }
/// <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; }
/// <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; }
public ModelAttribute(string typeName, HandlerEnum @enum) : this(typeName) { this.Handle = @enum; }