Snæ*_*ørn 1 dependency-injection automapper onion-architecture
我正在尝试配置我的Object Mapper而不知道我正在使用哪个mapper.:/
这可能听起来有点奇怪.这样做的原因是我正在尝试使用洋葱架构,因此我的UI无法了解我的基础架构中的Object Mapper.请参阅此解决方案以获取示例.

我在弄清楚如何"委托"无默认映射行为时遇到了一些麻烦.像:
Mapper
.CreateMap<MyModel, MyDestViewModel>()
.ForMember(
dest => dest.SomeDestinationProperty,
opt => opt.MapFrom(src => src.SomeSourceProperty)
);
Run Code Online (Sandbox Code Playgroud)
我在我的MVC项目中设置了一个从Global.asax调用的类,这是我想要配置映射的地方.
public static class MapConfig
{
public static void RegisterMaps()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我以为我可以做以下事情.(IMapper是位于Domain中的自定义接口)
public static void RegisterMaps(HttpConfiguration config)
{
var mapper = config.DependencyResolver.GetService(IMapper);
mapper.CreateMap<MyModel, MyViewModel>();
}
Run Code Online (Sandbox Code Playgroud)
现在......我将如何设置像.ForMember这样的特殊行为?请记住,它不能是AutoMapper特定的.
我正在思考这些方面的事情,mapper.CreateMap<MyModel, MyViewModel>(Expression<Func<T>>)其中Func会做一些我现在无法弄清楚的黑魔法:( - 我是在正确的道路上还是我错过了一些必要的东西?
Jim*_*ard 11
洋葱架构不是与实现无关的配置,而是与执行有关.
只需创建一个IMapper接口来执行映射,但不要担心配置.这适用于您的ORM,IoC容器和其他所有内容.
此外,洋葱架构不是关于项目结构,而是关于依赖关系的方向.只需在UI中调用CreateMap即可.然后,您可以在Core中一直定义一个IMapper接口,其他部分实现一个委托给AutoMapper的版本.