我创建了以下扩展方法
public static T Map<TEntity,T>(this TEntity entity) where TEntity : IEntity
{
return Mapper.Map<TEntity, T>(entity);
}
Run Code Online (Sandbox Code Playgroud)
这允许以下内容
Db.ExchangeSets.FirstOrDefault().Map<ExchangeSet, ExchangeSetSimpleViewModel>()
Run Code Online (Sandbox Code Playgroud)
但是我想知道无论如何我可以修改扩展方法,所以我可以调用如下的短路版本
Db.ExchangeSets.FirstOrDefault().Map<ExchangeSetSimpleViewModel>()
Run Code Online (Sandbox Code Playgroud)
请注意 :
是否应该像这样使用automapper不在问题的范围内,它更像是一个事实发现任务
对于那些在家里玩的人,在scotts评论的帮助下,我设法找到一个额外的解决上述功能的通用扩展方法为automapper
public static T Map<T>(this IEntity entity)
{
return (T)Mapper.Map(entity, entity.GetType(), typeof(T));
}
Run Code Online (Sandbox Code Playgroud)
但是除了AutoMapper之外,这不是实际问题的答案,而是相应地标记优点
我想用通用扩展方法映射我的对象.
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public Address HomeAddress { get; set; }
public string GetFullName()
{
return string.Format(“{0} {1}”, FirstName, LastName);
}
}
Run Code Online (Sandbox Code Playgroud)
这是viewmodel
public class CustomerListViewModel
{
public string FullName { get; set; }
public string Email { get; set; }
public string HomeAddressCountry { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
所以我正在创建地图, Mapper.CreateMap<Customer, CustomerListViewModel>();
我想创建一个扩展方法
public static class MapperHelper
{ …Run Code Online (Sandbox Code Playgroud)