Property.fs 696 B

123456789101112131415161718192021222324
  1. namespace FSharp.Data.Tdms
  2. open System
  3. type Property = {
  4. Name: string
  5. Type : Type
  6. Raw : obj
  7. }
  8. module Property =
  9. let tryGet<'t> { Type = ty; Raw = raw } =
  10. let ty' = typeof<'t>
  11. if ty'.IsAssignableFrom ty
  12. then tryUnbox<'t> raw
  13. else
  14. if ty = typeof<Timestamp> then
  15. let timestamp = raw :?> Timestamp
  16. if ty' = typeof<DateTime> then tryUnbox<'t> (Timestamp.toDateTime timestamp)
  17. else if ty' = typeof<DateTimeOffset> then tryUnbox<'t> (Timestamp.toDateTimeOffset timestamp)
  18. else if ty' = typeof<TimeSpan> then tryUnbox<'t> (Timestamp.toTimeSpan timestamp)
  19. else None
  20. else None