你肯定LastUpdateDate
是null
? Datetime
有一個默認值,所以如果你不明確將它設置爲null
你的條件將無法捕捉它。
嘗試:
cfg.CreateMap<ObjectDTO, Object>()
.ForMember(dest => dest.LastUpdateDate, opt => opt.Condition(c => c.LastUpdateDate != null && c.LastUpdateDate != default(DateTime)));
編輯:
class Program
{
static void Main(string[] args)
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap<ObjectDTO, Object>()
.ForMember(dest => dest.Number, opt => opt.Condition(src => src.Number.HasValue))
.ForMember(dest => dest.LastUpdateDate, opt => opt.Condition(src => src.LastUpdateDate.HasValue));
});
Mapper.AssertConfigurationIsValid();
var source = new ObjectDTO { LastUpdateDate = DateTime.Now };
var destination = new Object { Number = 10, LastUpdateDate = DateTime.Now.AddDays(-10) };
var result = Mapper.Map(source, destination);
}
}
public class ObjectDTO
{
public int? Number { get; set; }
public DateTime? LastUpdateDate { get; set; }
}
public class Object
{
public int? Number { get; set; }
public DateTime? LastUpdateDate { get; set; }
}
謝謝,但不是,這是一個可以空的日期時間,反正它不適用於任何其他財產 –
啊好吧。你能發佈一個更完整的例子嗎?讓我們看看Object和ObjectDTO類以及源和目標對象中的內容。沒有更多的信息很難說,但我更新了我的答案,我認爲做你想做的事。 – MisterIsaak