object ReadConverter(ReflectType ts, ulong oid) { #if __PCL__ throw new PlatformNotSupportedException("PCL"); #else var s = (string)Read(ReflectType.RString, null); var tc = ts.GetTypeConverter(); if (tc != null) { var o = tc.ConvertFromInvariantString(s); if (oid > 0) { Context.Register(oid, o); } return(o); } var missing = new Missing(ts); if (oid > 0) { Context.Register(oid, missing); } missing.ConverterString = s; return(missing); #endif }
void WriteConverter(ReflectType ots, object value) { if (value is Missing) { var m = (Missing)value; Write(ReflectType.RString, m.ConverterString); } else { #if !__PCL__ var tc = ots.GetTypeConverter(); if (tc == null) { throw new InvalidOperationException("Failed to get converter."); } var s = tc.ConvertToInvariantString(value); Write(ReflectType.RString, s); #endif } }