0

我想知道是否可以在 ForMemeber 中“子映射”映射对象。我配置了 a 类到 b 类的映射。然后我有两个新的类我需要映射 c 和 d,但是结构不同所以我必须使用 ForMember 来映射它们之间的配置映射。但是 c 和 d 都具有在源中用户 a 和在目标中用户 b 的类的属性。有没有办法说为 c 和 d 中的属性使用内部 a 到 b 映射的已配置映射?

4

1 回答 1

1

如果我理解这一点,你有类似的东西

public class a
{
    public int Foo { get; set; }
}

public class b
{
    public int Bar { get; set; }
}

public class c
{
    public a Baz { get; set; }
}

public class d
{
    public b Qux { get; set; }
}

并且您希望对类中的属性c进行d映射,而不必重新定义aand的映射b

如果是这样,则默认情况下您会得到它。这样的事情应该这样做:

public static class AutoMapperConfigurator
{
    public static void Configure()
    {
        AutoMapper.Mapper.CreateMap<a, b>()
            .ForMember(dest => dest.Bar, opt => opt.MapFrom(src => src.Foo));
        AutoMapper.Mapper.CreateMap<c, d>()
            .ForMember(dest => dest.Qux, opt => opt.MapFrom(src => src.Baz));
        AutoMapper.Mapper.AssertConfigurationIsValid();
    }
}

如果您的意思是别的,请更新您的问题以澄清。

于 2013-04-12T00:33:47.103 回答