public static ISharpPlugBuilder AddAutoMapperPlug(this ISharpPlugBuilder builder, params Assembly[] assemblies)
        {
            if (assemblies == null || assemblies.Length <= 0)
            {
                throw new ArgumentNullException("assemblies args is null or length with 0");
            }
            Mapper.Initialize(config =>
            {
                foreach (var assembly in assemblies)
                {
                    var types = from type in assembly.GetTypes()
                                let refType = type.GetReflector()
                                              where refType.IsDefined(typeof(AutoMapAttribute)) || refType.IsDefined(typeof(MapToAttribute)) ||
                                              refType.IsDefined(typeof(MapFromAttribute))
                                              select type;

                    foreach (var type in types)
                    {
                        foreach (var autoMapAttribute in type.GetReflector().GetCustomAttributes <MapAttributeBase>())
                        {
                            autoMapAttribute.CreateMap(config, type);
                        }
                    }

                    var mappingTypes = assembly.GetTypes().Where(o => o.GetInterfaces().Contains(typeof(IMapping))).ToArray();
                    foreach (var mapingType in mappingTypes)
                    {
                        ((IMapping)Activator.CreateInstance(mapingType, true)).CreateMapping(config);
                    }
                }
            });

            return(builder);
        }
示例#2
0
        public static ISharpPlugBuilder AddSharpPlugSwaggerGen(this ISharpPlugBuilder builder, Action <SharpPlugSwaggerGenOptions> setupAction)
        {
            builder.Services.Configure <MvcOptions>(c =>
                                                    c.Conventions.Add(new SwaggerApplicationConvention()));

            builder.Services.Configure(setupAction ?? (opts => { }));

            builder.Services.AddTransient(CreateSwaggerProvider);

            return(builder);
        }
        /// <summary>
        /// Auto Add RouterAttribute And  HttpMethodAttribute
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="setupAction"></param>
        /// <returns></returns>
        public static ISharpPlugBuilder AddWebApiRouter(this ISharpPlugBuilder builder, Action <SharpPlugRouterOptions> setupAction = null)
        {
            var options = new SharpPlugRouterOptions()
            {
                CustomRule = new Dictionary <string, HttpVerbs>()
            };

            setupAction?.Invoke(options);
            builder.Services.Configure <SharpPlugRouterOptions>(opt =>
            {
                opt.CustomRule = options.CustomRule;
            });
            builder.Services.Configure <MvcOptions>(c =>
                                                    c.Conventions.Add(new SharpPlugRouterActionModelConvention(options)));
            return(builder);
        }
 public static ISharpPlugBuilder AddElasticSearchPlug(this ISharpPlugBuilder builder, Action <ElasticSearchOptions> setupAction)
 {
     builder.Services.Configure(setupAction);
     builder.Services.AddTransient <ISharpElasticsearch, SharpElasticSearch>();
     return(builder);
 }
示例#5
0
 /// <summary>
 /// 传入程序集,注册依賴关系
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="assembly"></param>
 public static ISharpPlugBuilder Register(this ISharpPlugBuilder builder, params Assembly[] assembly)
 {
     assembly.AsParallel().ForAll(ass => DefaultRegister(builder.Services, ass));
     return(builder);
 }
 /// <summary>
 /// Auto Add RouterAttribute And  HttpMethodAttribute
 /// </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static ISharpPlugBuilder AddEntityFramework(this ISharpPlugBuilder builder)
 {
     builder.Services.AddTransient(typeof(Repository <,>));
     return(builder);
 }