Example #1
0
        protected void Application_Start()
        {
            EngineContext.Initialize(false);

            var configuration = GlobalConfiguration.Configuration;


            var resolver = new AutofacWebApiDependencyResolver(
                EngineContext.Current.ContainerManager.Container);

            GlobalConfiguration.Configuration.DependencyResolver = resolver;

            //注册AutoMapper
            //TODO:这里可能产生耦合,考虑是否使用接口
            var mapperConfig = new AutoMapperRegistrar();

            mapperConfig.Register();


            //GlobalConfiguration.Configuration.DependencyResolver
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);


            //TODO 阻止循环引用序列化(记录到RRDL)
            //阻止循环引用序列化
            var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;

            //json.SerializerSettings.PreserveReferencesHandling =
            //    Newtonsoft.Json.PreserveReferencesHandling.Objects;
            json.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
        }
        public static DropletBuilder UseAutoMapper(this DropletBuilder @this)
        {
            var registrar = new AutoMapperRegistrar(@this.ServiceCollection, @this.RegisterAssemblies.ToArray());

            registrar.CreateMap();

            return(@this);
        }
        public void TestAutoCreateMap()
        {
            var services  = new ServiceCollection();
            var registrar = new AutoMapperRegistrar(services, Assembly.GetExecutingAssembly());

            registrar.CreateMap();

            var sp     = services.BuildServiceProvider();
            var mapper = sp.GetService <IMapper>();

            var ac = new AClass();

            ac.Field = "HelloWorld";
            var amc = mapper.Map <AMapClass>(ac);

            Assert.AreEqual(ac.Field, amc.Field);

            var bc = new BMapClass();

            bc.Field  = "HelloWorld";
            bc.Field3 = "HelloWorld3";
            var bmc = mapper.Map <BClass>(bc);

            Assert.AreEqual(ac.Field, amc.Field);

            Assert.ThrowsException <AutoMapperConfigurationException>(() =>
            {
                mapper.Map <BMapClass>(bmc);
            });

            var cc = new CClass();

            cc.Field  = "HelloWorld";
            cc.Field3 = "HelloWorld3";
            var cmc = mapper.Map <CMapClass>(cc);

            Assert.AreEqual(ac.Field, amc.Field);

            Assert.ThrowsException <AutoMapperConfigurationException>(() =>
            {
                mapper.Map <CClass>(cmc);
            });
        }