#if NETSTANDARD using MessagePack.Formatters; using MessagePack.Internal; using System; namespace MessagePack.Resolvers { public sealed class UnsafeBinaryResolver : IFormatterResolver { public static readonly IFormatterResolver Instance = new UnsafeBinaryResolver(); UnsafeBinaryResolver() { } public IMessagePackFormatter GetFormatter() { return FormatterCache.formatter; } static class FormatterCache { public static readonly IMessagePackFormatter formatter; static FormatterCache() { formatter = (IMessagePackFormatter)UnsafeBinaryResolverGetFormatterHelper.GetFormatter(typeof(T)); } } } } namespace MessagePack.Internal { internal static class UnsafeBinaryResolverGetFormatterHelper { internal static object GetFormatter(Type t) { if (t == typeof(Guid)) { return BinaryGuidFormatter.Instance; } else if (t == typeof(Guid?)) { return new StaticNullableFormatter(BinaryGuidFormatter.Instance); } else if (t == typeof(Decimal)) { return BinaryDecimalFormatter.Instance; } else if (t == typeof(Decimal?)) { return new StaticNullableFormatter(BinaryDecimalFormatter.Instance); } return null; } } } #endif