这是测试:
var bus = ServiceBusFactory.New(c =>
{
c.DisablePerformanceCounters();
c.UseRabbitMq();
c.ReceiveFrom("rabbitmq://localhost/qqq");
});
bus.SubscribeHandler((Order o) => Console.WriteLine(o.Date));
bus.Publish(new Order
{
Date = "1994-11-05T13:15:30Z"
});
这是我的 Order 类(Date 属性是字符串类型!):
public class Order
{
public string Date { get; set; }
}
我希望显示 Date 的内容,但这是实际输出:
11/05/1994 13:15:30
那么,MassTransit 是否只是尝试将他收到的每个字符串转换为 DateTime,然后按照它想要的方式对其进行格式化,还是什么?
UPD:使用 XmlSerializer 而不是 Json 并没有解决问题。这是我在 RabbitMQ 中看到的部分消息:
<date>1994-11-05T13:15:30Z</date>
我在应用程序中收到的消息再次以相同的方式更改:
11/05/1994 13:15:30
UPD2:我已经测试了序列化程序(Json.NET):
var panda = new Panda
{
Birthday = "1994-11-05T13:15:30Z"
};
Console.Out.WriteLine(JsonConvert.DeserializeObject<Panda>(JsonConvert.SerializeObject(panda)).Birthday);
输出是字符串“原样”,所以看来问题不在于序列化程序。