1

我对 Mapster 有疑问。有一些课

public class DtoClass
{
    public string Name { get; set; }
    public ParamValueDto Value { get; set; }
}
public class ParamValueDto
{
    public int Value { get; set; }
}
public class TargetClass
{
    public string Name { get; set; }
    public object Value { get; set; }

    public TargetClass(string name, object value)
    {
        Name = name;
        Value = value;
    }
}
public class TargetParamValue
{
    public int Value { get; set; }

    public TargetParamValue(int value)
    {
        Value = value;
    }
}

配置:

            
config.ForType<DtoClass, TargetClass>()
    .MapToConstructor(true)
    .ConstructUsing(x => new TargetClass(x.Name,  new TargetParamValue(x.Value)));

一切都很好,对象按预期映射,但如果你再添加一个构造函数到TargetClass

public class TargetClass
{
    public string Name { get; set; }
    public object Value { get; set; }

    public TargetClass(string name, object value)
    {
        Name = name;
        Value = value;
    }
       
    public TargetClass(Foo foo) //Where Foo is any class
    {
        Name = "fsdf";
        Value = new ParamValueDto();
    }
}

在最终结果中,Value不会TargetParamValue像预期的那样包含,但是ParamValueDto,就好像结果ConstructUsing被忽略(但被调用)或覆盖一样。构造函数被正确调用 - 并TargetParamValue到达value,但最终结果将具有不正确的参数(带有ParamValueDtoin Value)。(新 ctor - 未调用)

4

0 回答 0