首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Automapper如果源为空,则设置目标对象属性

Automapper如果源为空,则设置目标对象属性
EN

Stack Overflow用户
提问于 2019-07-29 08:36:05
回答 2查看 1.2K关注 0票数 1

我有以下情况:

代码语言:javascript
运行
复制
public class AccountLogin
{
    public int UserID { get; set; }

    public bool AccountVerified { get; set; }
}

此对象从数据库中返回,因此如果没有找到用户,则可能为空

目标

代码语言:javascript
运行
复制
public class LoginUserResponseModel
{
    public bool AccountExists { get; set; }
    public bool AccountVerified { get; set; }
    public string Status { get; set; }
    public string Token { get; set; }
}

我需要什么?

如果源为null,则需要具有以下参数的目标对象的实例:

代码语言:javascript
运行
复制
{
    "AccountExists": false,
    "AccountVerified": false
    "Status": "Error"
    "Token": null
}

我将AutoMapper代码放入MappingProfile.cs文件中如下所示:

代码语言:javascript
运行
复制
 CreateMap<AccountLogin, LoginUserResponseModel>()
     .ForMember(dest => dest.AccountExists, opt => opt.MapFrom(src => src == null ? false : true))
     .ForMember(dest => dest.Status, opt => opt.MapFrom(src => src == null ? "Error" : "Ok"));

当对象为非空时,它设置Status = "Ok"AccountExists = false时,此代码工作良好。

当我从数据库接收到现有用户时,我的源AccountLogin,例如:

所以这张地图是这样正确的:

问题是当源为空时,目标也为空:

我有很多解决办法,但我真的很好奇是否可以用AutoMapper来实现它。

我使用的项目是ASP Net Core 2.2AutoMapper v6.1.1

EN

Stack Overflow用户

发布于 2019-07-29 09:31:42

您可以使用自定义的ConvertUsing尝试ITypeConverter:

代码语言:javascript
运行
复制
public class MyConverter : ITypeConverter<AccountLogin, LoginUserResponseModel >
{
    public int Convert(AccountLogin source, LoginUserResponseModel destination, ResolutionContext context)
    {
        return new LoginUserResponseModel{
           AccountExists = source == null ? false : true,
           AccountVerified = false,
           Status = source == null ? "Error" : "Ok",
           "Token": null
        };
    }
}

然后将其映射为:

代码语言:javascript
运行
复制
CreateMap<AccountLogin, LoginUserResponseModel>().ConvertUsing(new MyConverter());
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57249979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档