Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动映射:使用自定义解析器返回的结构_C#_Automapper - Fatal编程技术网

C# 自动映射:使用自定义解析器返回的结构

C# 自动映射:使用自定义解析器返回的结构,c#,automapper,C#,Automapper,对于AutoMapper,我使用的是一个ValueResolver,它返回如下结构 struct MyStruct { public int propA; public int propB; public int propC; } class MyResolver : ValueResolver<MyViewModel, MyStruct> { protected override MyStruct ResolveCore

对于AutoMapper,我使用的是一个ValueResolver,它返回如下结构

struct MyStruct
{
        public int propA;
        public int propB;
        public int propC;
}

class MyResolver : ValueResolver<MyViewModel, MyStruct>
{ 
     protected override MyStruct ResolveCore(MyViewModel source)
     {
      ....return MyStruct data
     }
}
struct MyStruct
{
公共国际宣传;
公共int propB;
公共int propC;
}
类MyResolver:ValueResolver
{ 
受保护的覆盖MyStruct ResolveCore(MyViewModel源)
{
..返回MyStruct数据
}
}
我返回了一个结构,因为映射规则非常复杂,我无法为每个属性编写自定义解析器,因为它们彼此相关

所以我的想法是在一个解析器中完成这项工作,该解析器返回一个结构并像这样使用它

AutoMapper.Mapper.CreateMap<MyViewModel, myData>()
    .ForMember(dest => dest.SomePropA, src => src.ResolveUsing<MyResolver>().propA))
    .ForMember(dest => dest.SomePropB, src => src.ResolveUsing<MyResolver>().propB))
AutoMapper.Mapper.CreateMap()
.FormMember(dest=>dest.SomePropA,src=>src.resolvesusing().propA))
.FormMember(dest=>dest.SomePropB,src=>src.resolvesusing().propB))
不幸的是,这不起作用

看起来
src.ResolveUsing()
没有返回结构

任何帮助都不胜感激


谢谢。

使用
FromMember
可以将源属性传递给ValueResolver

您可以使用以下内容:

.ForMember(dest => dest.SomePropA, opt=> opt.ResolveUsing<MyResolver>().FromMember(src => src.propA))
.formmember(dest=>dest.SomePropA,opt=>opt.resolvusing().FromMember(src=>src.propA))

如果未指定
FromMember
,AutoMapper将把源代码传递给您的ValueResolver。

这将不起作用,FromMember将值传递给resolver,它不允许您从resolver结果中指定所需的成员。。。除非您可以在解析器中添加一个讨厌的
开关大小写
,并根据输入值返回一些内容