首页 新闻 会员 周边 捐助

AutoMapper 使用 Conventions 映射出错

0
悬赏园豆:10 [已解决问题] 解决于 2019-04-24 00:24

使用 AutoMapper 7.0..1 转换出错!

public class User
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public string UserName { get; set; }
    }

public class UserOutput
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public string Account { get; set; }

    }
Mapper.Initialize(
                cfg =>
                {
                    cfg.AddMemberConfiguration()
                        .AddMember<NameSplitMember>()
                        .AddName<PrePostfixName>(_ => _.AddStrings(p => p.Postfixes, "Output"));
                    cfg.AddConditionalObjectMapper().Where((s, d) => s.Name == d.Name + "Output");

                    cfg.AddMemberConfiguration()
                        .AddMember<NameSplitMember>()
                        .AddName<PrePostfixName>(_ => _.AddStrings(p => p.DestinationPostfixes, "Input"));
                    cfg.AddConditionalObjectMapper().Where((s, d) => d.Name == s.Name + "Input");
                });

var user = new User
{
      Id = 1,
      Name = "管理员",
      UserName = "admin"
};

 Mapper.Map<User, UserOutput>(user);

UserOutput 中多出一个 Account 属性,在 User 中不存在,导致无法转换成功,如果直接使用 cfg.CreateMap<User, UserOutput>() 创建配置是可以转换成功,但是这样需要多出许多配置的语句。

求解?

WWMLee的主页 WWMLee | 菜鸟二级 | 园豆:247
提问于:2018-06-29 13:30
< >
分享
最佳答案
0
WWMLee | 菜鸟二级 |园豆:247 | 2018-06-29 14:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册