Bir DateTime nesnesini (örneğin bir BinaryWriter kullanarak) düzgün şekilde serileştirir ve tüm durumunu korur muyum?Serialize DateTime ikili olarak
Bir tarihin yalnızca dahili bir uzun tamsayı ile temsil edildiğinin ve bu tamsayıya DateTime'ın Ticks
özelliğinin erişilebilir olduğu izlenimindeydim.
public long InternalTicks
{
get { return (long) this.dateData & 4611686018427387903L; }
}
: Ancak, uygulama bakarak, Keneler özelliği aslında bir ulong depolanan gerçek iç verilerin bir alt kümesi dateData
Keneler (sadece InternalTicks alır) şöyle uygulanır denilen döndürür Görebildiğim kadarıyla, dateData, Ticks
özelliği tarafından açığa çıkmayan bilgiler içerebilir.
henüz yabancı bir DateTime BinaryFormatter Serile GetObjectData() yapar: çıktısı akışında iki uzun ürünler, bunlardan biri kolayca diğerinden recovererd olacağını
info.AddValue("ticks", this.InternalTicks);
info.AddValue("dateData", this.dateData);
!
DateTime'ımı dahili durumlardan herhangi birini kaybetme riski olmadan nasıl serileştirebilirim (tercihen yalnızca 8 bayt ve yansıma olmadan). Düşünüyorum belki de direk (güvensiz), direk bir ulonga olabilir mi?
Yoksa hiçbir neden için endişeleniyorum, Ticks
özelliği aslında gerekli tüm durumu kodlayacak mı?
Şahsen sadece DateTim kullanayım Yerel tarihler için "UTC" tarihleri ve "DateTimeOffset" e. O halde 'Kind''i saklamaktan endişelenmenize gerek yok, sadece 'UTC' dır. – CodesInChaos
Serileştirilmiş tarihlerin türlerini denetlemiyorum. –