AutoMapper:如果指定类型的源对象为null,则将目标对象的所有属性设置为默认值

时间:2012-09-20 12:41:12

标签: c# automapper automapper-2

是否可以将AutoMapper配置为将所有属性设置为默认值,以防源对象对于指定的类为空?我知道我应该使用Mapper.AllowNullDestinationValues = false;来为应用程序中的所有类做我想要的事情。 这里是我用于测试的采样代码,但它不起作用

public class A
{
    static A()
    {
        Mapper.Initialize(
            config =>
                {
                    config.ForSourceType<B>().AllowNullDestinationValues = false;
                    config.CreateMap<B, A>()
                        .ForMember(member => member.Name, opt => opt.Ignore());
                });
        //Mapper.AllowNullDestinationValues = false;

        Mapper.AssertConfigurationIsValid();
    }

    public void Init(B b)
    {
        Mapper.DynamicMap(b, this);
    }

    public int? Foo { get; set; }
    public double? Foo1 { get; set; }
    public bool Foo2 { get; set; }
    public string Name { get; set; }
}

public class B
{
    public string Name { get; set; }
    public int? Foo { get; set; }
    public double? Foo1 { get; set; }
    public bool Foo2 { get; set; }
}

使用此代码:

var b = new B() {Foo = 1, Foo1 = 3.3, Foo2 = true, Name = "123"};
var a = new A {Name = "aName"};
a.Init(b);      // All ok: Name=aName, Foo=1, Foo1=3,3, Foo2=True
a.Init(null);   // Should be Name=aName, Foo=null, Foo1=null, Foo2=False, 
                // but a has the same values as on a previous line

0 个答案:

没有答案