我是Automapper的新手,所以我不确定这是否可行.
我想映射一个类,但让它忽略无效的方法.下面是我所拥有的代码的说明.当我运行它时,我收到以下异常消息.
AutoMapper.dll中出现未处理的"AutoMapper.AutoMapperMappingException"类型异常
不幸的是,它不是一个改变界面的选项,所以我假设如果这是可能的,我缺少某种配置?
public interface IThing
{
string Name { get; set; }
void IgnoreMe();
}
public class Foo : IThing
{
public string Name { get; set; }
public void IgnoreMe()
{
}
}
class Program
{
static void Main(string[] args)
{
var fooSource = new Foo {Name = "Bobby"};
Mapper.CreateMap<IThing, IThing>();
var fooDestination = Mapper.Map<IThing>(fooSource);
Console.WriteLine(fooDestination.Name);
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用接口作为目标类型,AutoMapper将为您动态创建实现(代理)类型.
但是,代理生成仅支持属性,因此它会为您的IgnoreMe方法抛出这个不太具描述性的异常.所以你不能忽视你的IgnoreMe方法.
作为一种解决方法,您可以显式指定如何使用其中一个ConstructUsing重载来构造目标对象,在这种情况下,AutoMapper不会生成代理.
Mapper.CreateMap<IThing, IThing>()
.ConstructUsing((ResolutionContext c) => new Foo());
Run Code Online (Sandbox Code Playgroud)
或者除非你没有充分的理由,否则你可以直接映射到 Foo
Mapper.CreateMap<IThing, Foo>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2670 次 |
| 最近记录: |