這可以通過使用元組並通過創建派生自Automapper的Abstract TypeConverter類的自定義類型轉換器來完成。
假設你有一個源和目的類:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public override string ToString()
{
return string.Format("Firstname: {0}, Lastname: {1}", FirstName, LastName);
}
}
然後,你可以構建自定義轉換器類型
public class CustomerPersonConverter : TypeConverter<Tuple<Person, Person>, Person>
{
protected override Person ConvertCore(Tuple<Person, Person> source)
{
var orginalValues = source.Item1;
var updatedValues = source.Item2;
var result = new Person
{
FirstName = string.IsNullOrEmpty(updatedValues.FirstName) ? orginalValues.FirstName : updatedValues.FirstName,
LastName = string.IsNullOrEmpty(updatedValues.LastName) ? orginalValues.LastName : updatedValues.LastName
};
return result;
}
}
可能像
var orginal = new Person() {FirstName = "Clifford", LastName = "Mayson"};
var updated = new Person() {FirstName = "Cliff"};
Mapper.CreateMap<Tuple<Person, Person>, Person>().ConvertUsing<CustomerPersonConverter>();
var result = Mapper.Map<Person>(new Tuple<Person, Person>(orginal, updated));
Console.WriteLine(result);
使用哪個會產生保留原始姓氏值的結果,因爲在更新中缺少原始姓氏值,但會更新名字的價值,例如。
Firstname: Cliff, Lastname: Mayson
Mapper.Map返回UserDetails或UserSession嗎? – 2012-04-02 16:45:18
它應該返回UserDetails - 我剛剛更新了代碼示例。 – Deano 2012-04-02 18:35:47
拋出什麼錯誤? – 2013-10-19 01:53:06