Я нашел несколько способов справиться с этой проблемой. Более сложные методы включают перехват пользовательской конечной точки MessageFormatter.
Мы нашли простой способ это сделать.
Доли секунд генерируются, только если они есть у объекта datetime.
Что мы сделали:
Мы создали обработчик событий static on propertychange, который использует отражение для обнаружения типов данных datetime. Найдя, мы воссоздаем дату и время без доли секунд. В нашем случае нас не заботили секунды. Мы связываем событие в частичном конструкторе класса. Вот и все.
Конечно
public static class DateTimeSecondCatcher
{
PropertyInfo dateTimePropertyInfo = sender.GetType().GetProperty(e.PropertyName);
if ((dateTimePropertyInfo != null) && (dateTimePropertyInfo.PropertyType == typeof(DateTime)))
{
DateTime dteValue = (DateTime)dateTimePropertyInfo.GetValue(sender, null);
if (dteValue.Millisecond > 0)
{
dateTimePropertyInfo.SetValue(sender, new DateTime(dteValue.Year,dteValue.Month,dteValue.Day, dteValue.Hour,dteValue.Minute,dteValue.Second,0,dteValue.Kind), null);
}
}
}
// This code goes in the partial class constructor
this.PropertyChanged += new PropertyChangedEventHandler(DateTimeSecondCatcher.OnPropertyChanged);