C# 使用属性c的自动映射程序#

C# 使用属性c的自动映射程序#,c#,automapper,C#,Automapper,我有两个对象,我想使用AutoMapper属性映射它们,这些是我的目标对象: public class ClaseB { public string UBLVersionID_nuevo { get; set; } public ClaseB_inside objetoB_inside { get; set; } } public class ClaseB_inside { public string texto_inside { get; set; } } 这是我

我有两个对象,我想使用AutoMapper属性映射它们,这些是我的目标对象:

public class ClaseB
{
    public string UBLVersionID_nuevo { get; set; }

    public ClaseB_inside objetoB_inside { get; set; }
}

public class ClaseB_inside
{
    public string texto_inside { get; set; }
}
这是我的源代码类:

[MapsTo(typeof(ClaseB))]
public class ClaseA
{
    [MapsToProperty(typeof(ClaseB), "objetoB_inside.texto_inside")]
    public string texto { get; set; } = "texto prueba";

    [MapsToProperty(typeof(ClaseB), "UBLVersionID_nuevo")]
    public string texto2 { get; set; } = "texto 2 de prueba";
}
当我尝试映射时,出现以下错误:

错误映射类型

随着这一变化:

[MapsTo(typeof(ClaseB))]
public class ClaseA
{
    [MapsToProperty(typeof(ClaseB_inside), "objetoB_inside.texto_inside")]
    public string texto { get; set; } = "texto prueba";

    [MapsToProperty(typeof(ClaseB), "UBLVersionID_nuevo")]
    public string texto2 { get; set; } = "texto 2 de prueba";
}
我在
ClaseB.objetoB\u中得到
null
,但是
ClaseB.UBLVersionID\u nuevo
它可以工作


我做错了什么?

我认为问题在于您定义映射的方式。如果您没有使用AutoPAPER属性,并通过静态API初始化:

,请考虑以下事项
        Mapper.Initialize(expression =>
        {
            expression.CreateMap<ClaseA, ClaseB>()
                .ForMember(
                    from => from.objetoB_inside.texto_inside, 
                    to => to.MapFrom(a => a.texto2));
        });
然后,您需要用以下内容装饰您的课堂:

[MapsToClaseB]

public class MapsToClaseB : MapsToAttribute
{
    public MapsToClaseB() : base(typeof(ClaseB)) { }

    public void ConfigureMapping(IMappingExpression<ClaseA, ClaseB> mappingExpression)
    {
        mappingExpression.AfterMap(
            (a, b) => b.objetoB_inside = new ClaseB_inside{texto_inside = a.texto});
    }
}