[Mono-dev] Marshaling DateTime type

Robert Jordan robertj at gmx.net
Wed Oct 15 10:23:10 EDT 2008


Raja R Harinath wrote:
> Hi,
> 
> Robert Jordan <robertj at gmx.net> writes:
> 
>> FirstName LastName wrote:
>>> What would be the best equivalent unmanaged type (linux and windows)
>>> to use if I want to marshal a DateTime in the managed world (.NET,
>>> mono)?
>> You can't marshal DateTime directly because its internal representation
>> is different between runtimes *and* profiles. Use DateTime.Tick (an
>> int64) or a similar era-based representation.
> 
> But, IIRC, strangely enough, arrays of DateTimes should serialize fine.
> So, you might be better of using a one-element DateTime array.

Look at DateTime's layout:

public struct DateTime
{
         private TimeSpan ticks;
#if NET_2_0
        	DateTimeKind kind;
#endif
}

Nasty things would happen if the unmanaged code is profile agnostic.

Robert



More information about the Mono-devel-list mailing list