3

次のマッピングを使用します。

Mapper.CreateMap<ObjectA, ObjectB>()
    .ForMember(dest => dest.SomeStringProperty, opt => opt.MapFrom(src => null))

SomeStringPropertynullではなく空の文字列になりました(私が期待するように)

これはバグですか?どうすれば実際にnullにすることができますか?

nullになると思いopt.Ignore()ますが、実際には次のような条件付きnullを実行したいので、上記の簡略化されたバグ(?)がこれを防いでいます。

Mapper.CreateMap<ObjectA, ObjectB>()
    .ForMember(dest => dest.SomeStringProperty, opt => opt.MapFrom(src => src.SomeOtherProp != null ? src.SomeOtherProp.Prop1 : null))
4

2 に答える 2

7

ソースコードを調べて設定を見つけました...これがバグではなく、実際には設定可能な設定であることを確認しました。

マッピングを構成するとき。

Mapper.Initialize(x =>
{
    x.AddProfile<UIProfile>();
    x.AddProfile<InfrastructureProfile>();
    x.AllowNullDestinationValues = true; // does exactly what it says (false by default)
});
于 2009-10-07T00:18:03.160 に答える
1

次を使用して文字列のマップを定義できます

ITypeConverter<string, string>

変換すると、nullの場合はnullが返されます。空の文字列を取得するのは設計によるものだと思います。これは自然で便利だと思いますが、もちろん間違っているかもしれません;)

リクエストに応じて、上記よりも正確なコードを提供できますが、何をしているのかはご存知だと思います。

于 2009-10-06T17:07:54.780 に答える