有两个班级
/* ... start of your file */
class Foo {};
typedef FooMap<Foo,5>::Iterator FooIterator;
int main()
{
}
我想根据条件- class A
{
public string ProductionDivision { get; set; }
}
class B
{
private object _productionDivision;
public enum ProductionDivisionOneofCase
{
None = 0,IsnullproductionDivision = 15,ProductionDivisionValue = 16,}
private ProductionDivisionOneofCase _productionDivisionCase = ProductionDivisionOneofCase.None;
public bool IsnullProductionDivision
{
get { return _productionDivisionCase == ProductionDivisionOneofCase.IsnullproductionDivision ? (bool)_productionDivision : false; }
set
{
_productionDivision = value;
_productionDivisionCase = ProductionDivisionOneofCase.IsnullproductionDivision;
}
}
public string ProductionDivisionValue
{
get { return _productionDivisionCase == ProductionDivisionOneofCase.ProductionDivisionValue ? (string)_productionDivision : ""; }
set
{
_productionDivision = value;
_productionDivisionCase = ProductionDivisionOneofCase.ProductionDivisionValue;
}
}
}
(映射到ProductionDivision
)还是不null
(映射,将IsnullProductionDivision
属性映射到B类的一个属性到源属性值的null
)。我可以做到如下。
ProductionDivisionValue
如果{源属性名称}的值为CreateMap<A,B>()
.ForMember(g => g.IsnullProductionDivision,m =>
{
m.PreCondition(s => s.ProductionDivision == null);
m.MapFrom(b => true);
})
.ForMember(g => g.ProductionDivisionValue,m =>
{
m.PreCondition(s => s.ProductionDivision != null);
m.MapFrom(b => b.ProductionDivision);
});
,则Isnull {源属性名称}的值为null
。
否则,如果{源属性名称}的值不是true
,则{源属性名称} Value的值就是{源属性名称}的值。
我有许多属性可以响应此映射规则。因此,我不想为上述每个属性编写映射规则。我想在全球范围内配置此类映射的规则。
如何配置AutoMapper,使其能够处理这种复杂的映射?