/// <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且 /// 不为<seealso cref="HandlerEnum.None"/>的ModelType都指定为<seealso cref="ILimitRegistrationBuilder.ModelType"/> /// </summary> /// <param name="limitRegistration">受限的构建者</param> /// <returns>返回一个受限的构建者</returns> public static ILimitRegistrationBuilder Mapping(this ILimitRegistrationBuilder limitRegistration) { return(limitRegistration.Mapping(predicate: 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> /// 将<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 <TModel>(this ILimitRegistrationBuilder limitRegistrationBuilder) where TModel : class { return(new LimitRegistrationBuilder <TModel>(limitRegistrationBuilder.RegistrationBuilder)); }