Automapper: Hydrate int? w oparciu o warunki

Mam następujący kod:

[Test]
public void ConditionalMapping()
{
    var src = new Sample1 {Age = 1, Number = null};
    var dest = new Sample2 {Age = null, Number = 1};

    Hydrate(src, dest, false);

    Assert.That(dest.Age, Is.EqualTo(1));
    Assert.That(dest.Number, Is.EqualTo(1));

    src = new Sample1 {Age = null, Number = 1};
    dest = new Sample2 {Age = 1, Number = null};

    Hydrate(src, dest, true);

    Assert.That(dest.Age, Is.Null);
    Assert.That(dest.Number, Is.EqualTo(1));
}

public void Hydrate(Sample1 src, Sample2 dest, bool allowOverride)
{
    if (!dest.Age.HasValue || allowOverride)
        dest.Age = src.Age;

    if (!dest.Number.HasValue || allowOverride)
        dest.Number = src.Number;
}

public class Sample1
{
    public int? Age { get; set; }
    public int? Number { get; set; }
}

public class Sample2
{
    public int? Age { get; set; }
    public int? Number { get; set; }
}

Który zasadniczo nawilżaint? jeśli wartość jestnull chyba żeallowOverride = true, w którym będzie nawadniać wartość bez sprawdzania wartości pola.

Jak mogę to zrobić w Automapper?

Wiem, że możesz użyć .Condition () jak pokazano tutaj:

Stan automatu zostaje zignorowany

Ale nie mogłem wymyślić, jak:

Zastosuj logikę na podstawieint? bez definiowania go pojedynczo.ZawieraćallowOverride boolean do Mappera.

questionAnswers(1)

yourAnswerToTheQuestion