3
我想用我的域實體ICustomer與AutoMapper映射CustomerDTO。對於第一個繼承級別,一切都可以正常工作,但對其他繼承級別不會。AutoMapper用通用類型的繼承
我用我的域模型的接口,因爲具體類型由StructureMap從我的LinqToSql數據庫基礎架構層注入。
public interface IBaseEntity<TPk>
{
TPk Id { get; }
}
public interface ICustomer : IBaseEntity<int>
{
string Email { get; set; }
}
[DataContract]
public class CustomerDTO
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Email { get; set; }
}
現在AutoMapper映射
Mapper.CreateMap<CustomerDTO, ICustomer>();
Mapper.CreateMap<ICustomer, CustomerDTO>();
Mapper.AssertConfigurationIsValid();
現在在哪兒我使用的映射
public CreateCustomerServiceResult CreateCustomer(CustomerDTO customer)
{
var result = new CreateCustomerServiceResult();
try
{
var originalMapped = Mapper.DynamicMap<CustomerDTO, ICustomer>(customer);
var newCustomer = _customerService.CreateCustomer(originalMapped);
var newMapped = Mapper.DynamicMap<ICustomer, CustomerDTO>(newCustomer);
result.Customer = newMapped;
}
catch (Exception ex)
{
}
return result;
}
我有一個Dictionnary的 「ID」 屬性缺少鍵異常 ...
一兩件事 - 沒有必要做「DynamicMap」 - 這是唯一保留的,你不知道在編譯時類型案件。只需使用Mapper.Map即可。 – 2009-12-02 03:45:49