1
我只是把一個自定義的AutoMapper ValueResolver放在一起,試圖將一個條件從我的域對象映射到MVC視圖模型上的一個布爾屬性,而且非常簡單,我感覺必須有一種內置的方式來執行沒有自定義解析器,我正在嘗試做什麼。Automapper:是否有內置的方法將源對象中的條件映射到目標上的布爾值?
我試圖實現的邏輯是,如果「MyDomainObject.MyStatus」等於「StatusCode.Inactive」,那麼映射到視圖模型的值(「MyViewModel.CanRemove」)應該是false。
這是我(簡化)例如:
// Domain Object:
public class MyDomainObject
{
public int Id{get;set;}
public StatusCode MyStatus{get;set;}
}
public enum StatusCode
{
Active,
Inactive
}
// View Model:
public class MyViewModel
{
public int Id{get;set;}
public bool CanRemove{get;set;}
}
// My custom resolver
public class BooleanValueResolver<T> : ValueResolver<T,bool>
{
private readonly Func<T, bool> _condition;
public BooleanValueResolver(Func<T,bool> condition)
{
_condition = condition;
}
protected override bool ResolveCore(T source)
{
return _condition(source);
}
}
// My AutoMapper mapping:
public class MyMappingProfile : Profile
{
protected override void Configure()
{
Mapper.CreateMap<MyDomainObject, MyViewModel>()
.ForMember(viewModel => viewModel.CanRemove,
opt => opt.ResolveUsing(new BooleanValueResolver<MyDomainObject>(domainObject => !domainObject.MyStatus.Equals(StatusCode.Inactive))));
}
}
有誰知道是否有可能實現這一行爲,而不使用我的自定義ValueResolver?
是的,這樣的作品,感謝帕特里克! – 2010-10-26 17:53:29