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); }); }