控制反转(或IoC)在第一次遇到时会非常混乱.
假设我有一个源类:
public class Source
{
//Several properties that can be mapped to DerivedBase and its subclasses
}
Run Code Online (Sandbox Code Playgroud)
还有一些目的地类:
public class DestinationBase
{
//Several properties
}
public class DestinationDerived1 : DestinationBase
{
//Several properties
}
public class DestinationDerived2 : DestinationBase
{
//Several properties
}
Run Code Online (Sandbox Code Playgroud)
然后我希望派生的目标类继承baseclass的automapper配置,因为我不想重复它,有没有办法实现这个?
Mapper.CreateMap<Source, DestinationBase>()
.ForMember(...)
// Many more specific configurations that should not have to be repeated for the derived classes
.ForMember(...);
Mapper.CreateMap<Source, DestinationDerived1 >()
.ForMember(...);
Mapper.CreateMap<Source, DestinationDerived2 >()
.ForMember(...);
Run Code Online (Sandbox Code Playgroud)
当我像这样写它时根本不使用基本映射,包含似乎对我没有帮助.
编辑:这是我得到的:
public class Source
{
public string …Run Code Online (Sandbox Code Playgroud) 我可以在AutoMapper(v2.2)中使用具有相同Source类型但不同Destination类型的映射的继承映射吗?
我有这个基本情况(真正的类有更多的属性):
public abstract class BaseViewModel
{
public int CommonProperty { get; set;}
}
public class ViewModelA : BaseViewModel
{
public int PropertyA { get; set; }
}
public class ViewModelB : BaseViewModel
{
public int PropertyB { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
ViewModelA并且ViewModelB是同一个Entity类的不同表示:
public class Entity
{
public int Property1 { get; set; }
public int Property2 { get; set; }
public int Property3 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想BaseViewModel为每个ViewModel 重用相同的映射,例如:
Mapper.CreateMap<Entity, BaseViewModel>()
.Include<Entity, ViewModelA>() …Run Code Online (Sandbox Code Playgroud)