Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics 自动映射和开放泛型_Generics_Automapper_Open Generics - Fatal编程技术网

Generics 自动映射和开放泛型

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 {

我正在尝试使用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 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>();