汽车应用程序,我们可以看到它如何映射对象



快速新手关于自动应用程序的问题。

我有以下代码:

CreateMap<MyDataContract, MyViewModel>()
    .MapFrom(s => s.Trans, d => d.Trans);

在数据合同中,mydatacontract,我有以下内容:

[DataMember]
public IEnumerable<ReferTypeDataContract> Refer { get; set;} 

我正在尝试找出自动应用程序如何将其从上面的创建信息映射到refertypedataCnratct。是否有任何视觉工具可以检查此功能,或者可以添加一些可见的调试代码。

我要问的原因是,我有一个不同的映射,正在映射mydatactract,但是我得到了参考列表的不同结果,并且无法弄清楚。

自动应用程序可以如文档中所述可视化其执行计划:了解您的映射。

这意味着您可以获取任何源目标对的表达树。例如:

var configuration = new MapperConfiguration(cfg => {/* your mappings */});
LambdaExpression executionPlan = configuration.BuildExecutionPlan(typeof(Foo), typeof(Bar));

文档提供了使用此与扩展以可视化树的文档。如果它不起作用,让我们使用内置的文本可视化器。从这样的源类开始:

public class Foo
{
    public int Id { get; set; }
    public List<FooInner> Inners { get; set; }
}

创建地图配置Foo -> BarFooInner -> BarInner。调用BuildExecutionPlan方法后设置断点,并在快速观看(Shift+F9(中检查executionPlan。然后转到DebugView属性,然后选择Text visualizer箭头以在新窗口中打开它。通常,您会得到很多文本,其中包含以下语句:

$resolvedValue = .If (
    False || $src == null
) {
    .Default(System.Collections.Generic.List`1[XUnitTests.FooInner])
} .Else {
    $src.Inners
};
$passedDestination = .If ($dest == null) {
    .Default(System.Collections.Generic.List`1[XUnitTests.BarInner])
} .Else {
    $typeMapDestination.Inners
};  

因此,它详细描述了Foo属性的映射方式。

最新更新