2つのクラスがマップされています。ソースクラスはDateTime
プロパティを持ち、宛先タイププロパティlong
(DateTime.Ticks
)にマップされ、それぞれUpdateDt
とUpdateDtTicks
です。部分的なプロパティ名の一致によってAutomapperのマッピングプロパティが予期せずに一致する
Automapperを使用してこれらの2つのクラスをマッピングすると、UpdateDtTicks
プロパティはUpdateDt
プロパティから値を自動的に取得しますが、プロパティ名が同じではなく、このプロパティのマッピングを明示的に設定していません。
プロパティ名が最後にのみ異なるため、Automapperはプロパティを自動的に設定していますか?そうでない場合は、予期しない動作であるので、なぜこれが起こっているのでしょうか。
参照してください以下のコード:
static void Main(string[] args)
{
Configuration.Configure();
var person = new OrderDto
{
OrderId = 999,
MyDate = new DateTime(2015, 1, 1, 4, 5, 6)
};
var orderModel = Mapper.Map<OrderModel>(person);
Console.WriteLine(new DateTime(orderModel.MyDateTicks.Value));
Console.ReadLine();
}
public class OrderDto
{
public int OrderId { get; set; }
public DateTime MyDate { get; set; }
}
public class OrderModel
{
public int OrderId { get; set; }
public long? MyDateTicks { get; set; }
}
public class Configuration
{
public static void Configure()
{
Mapper.CreateMap<OrderDto, OrderModel>();
}
}
コンソールでの結果:
ウォッチ:
...正確には、必要に応じ
long
を返すMyDate.Ticks
を、マッチングMyDateTicks
と同じです'postfix、そして' MyDate.Ticks'が意味をなすならば試みます。この場合、これは完全に有効な式です。私はドキュメントのこの機能を探していますが、それは起こっているようです。例えばMyDateTiicksに名前を変更しようとしましたか? – MarioDS私は 'MyDateTiicks'を試しましたが、マップされません。私も 'MyDatesTicks'を試しましたが、マップされていません。つまり、プロパティ名と、プロパティ名に「Ticks」が含まれているという組み合わせのように見えます。 –