Exemplo n.º 1
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);
        }
Exemplo n.º 2
0
 /// <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));
 }
Exemplo n.º 3
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);
 }
Exemplo n.º 4
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));
 }
Exemplo n.º 5
0
 /// <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));
 }