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.