C# 自动映射Let实例变量

C# 自动映射Let实例变量,c#,automapper,dto,C#,Automapper,Dto,道歉如果以前有人问过,我不确定具体的问法 一个简短的例子: public class SignOffDetails { public int fUserID {get; set;} public DateTime SignedAt {get; set;} } public class User { public int UserID {get; set;} public string FullName {get; set;} public Image S

道歉如果以前有人问过,我不确定具体的问法

一个简短的例子:

public class SignOffDetails
{
    public int fUserID {get; set;}
    public DateTime SignedAt {get; set;}
}

public class User
{
    public int UserID {get; set;}
    public string FullName {get; set;}
    public Image Signature {get; set;}
}

public class MdlsCombined
{
    public int UserID {get; set;}
    public string FullName {get; set;}
    public Image Signature {get; set;} 
}

public void Program 
{

    Mapper.CreateMap<SignOffDetails, MdlsCombined>()
        .ForMember(m => m.UserID, y => y.MapFrom(z => z.fUserID));
    // Awesome
}
公共类签名详细信息
{
public int fUserID{get;set;}
public DateTime SignedAt{get;set;}
}
公共类用户
{
public int UserID{get;set;}
公共字符串全名{get;set;}
公共图像签名{get;set;}
}
公共类MDLSC
{
public int UserID{get;set;}
公共字符串全名{get;set;}
公共图像签名{get;set;}
}
公共无效程序
{
Mapper.CreateMap()
.ForMember(m=>m.UserID,y=>y.MapFrom(z=>z.fUserID));
//棒极了
}
我知道我可以单独映射它们,但是有没有一个函数可以执行我尚未发现的以下操作

Mapper.CreateMap<SignOffDetails, MdlsCombined>()
    .Let(z => (User)Users.GetUser(z.fUserID))
    .ForMember(m => m.UserID, y => y.MapFrom(z => z.fUserID))
    .ForMember(m => m.FullName, y => y.MapFromLet(l => ((User)l).FullName))
    .ForMember(m => m.Signature, y => y.MapFromLet(l => ((User)l).Signature));
Mapper.CreateMap()
.Let(z=>(用户)Users.GetUser(z.fUserID))
.ForMember(m=>m.UserID,y=>y.MapFrom(z=>z.fUserID))
.ForMember(m=>m.FullName,y=>y.MapFromLet(l=>((用户)l.FullName))
.ForMember(m=>m.Signature,y=>y.MapFromLet(l=>((用户)l.Signature));
我意识到这是相当愚蠢的,并且从一开始就消除了过程编程的全部意义,但它仍然是一种合法的用途


实际的解决方案是使用SignOffDetails>MdlsCombined和User>MdlsCombined中的两个映射,但这并不流畅;)

也许你应该重新措辞这个问题。我不确定你的问题是关于什么的如果我理解正确,你正在尝试将两个对象(
SignOffDetails
User
)映射到一个(
MdlsCombined
)中?AutoMapper本机不支持这一点(因为它不是1-1映射),但您可以使用
AfterMap
做一些事情。虽然我认为你最终还是会得到多个映射,但实际上我想要的是同样的东西!