Generics 自动映射和开放泛型
我正在尝试使用Automapper的开放泛型(如中所述)来执行用户和帐户之间的映射Generics 自动映射和开放泛型,generics,automapper,open-generics,Generics,Automapper,Open Generics,我正在尝试使用Automapper的开放泛型(如中所述)来执行用户和帐户之间的映射 public class User { public Guid UserId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTime Dob { get; set; } } public class Account {
public class User
{
public Guid UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime Dob { get; set; }
}
public class Account
{
public Guid UserId { get; set; }
public string FirstName { get; set; }
}
我创建了源和目标
public class Source<T>
{
public T Value { get; set; }
}
public class Destination<T>
{
public T Value { get; set; }
}
对于封闭泛型,还需要能够映射类型参数。添加以下内容:
Mapper.CreateMap<User, Account>();
Mapper.CreateMap();
你已经准备好了。希望情况并非如此!在我的实际应用程序中,帐户在MVC项目中定义,用户在服务项目中定义。服务项目没有参考MVC项目,因此我无法映射您建议的方式。我可以做这个Mapper.CreateMap();但是每次调用GetAccountFromUser()方法.Ugh都会执行此操作。我讨厌这样的项目布局。把所有的东西都放在一个项目中,使用文件夹。那艘船已经开航了!为问题添加了一个可能的解决方案
var mappingExists = Mapper.GetAllTypeMaps().FirstOrDefault(m => m.SourceType == typeof (User) && m.DestinationType == typeof (T));
if (mappingExists == null)
Mapper.CreateMap<User, T>();
Mapper.CreateMap<User, Account>();