Resolvers
BssomValueResolver.cs
using Bssom.Serializer.Formatters;
using Bssom.Serializer.Internal;
using System;
using System.Collections.Generic;
namespace Bssom.Serializer.Resolvers
{
///
/// 获取的类型的
/// Gets of the type
///
public sealed clast BssomValueResolver : IFormatterResolver
{
///
/// The singleton instance that can be used.
///
public static readonly BssomValueResolver Instance = new BssomValueResolver();
public IBssomFormatter GetFormatter()
{
return FormatterCache.Formatter;
}
private static clast FormatterCache
{
public static readonly IBssomFormatter Formatter;
static FormatterCache()
{
Type t = typeof(T);
if (BssomValueResolverGetFormatterHelper.TryGetFormatter(t, out IBssomFormatter formatter))
{
Formatter = (IBssomFormatter)formatter;
return;
}
}
}
}
}
namespace Bssom.Serializer.Internal
{
internal static clast BssomValueResolverGetFormatterHelper
{
private static readonly Dictionary FormatterMap = new Dictionary()
{
{ typeof(BssomNumber), BssomNumberFormatter.Instance },
{ typeof(BssomArray), BssomArrayFormatter.Instance },
{ typeof(BssomString), BssomStringFormatter.Instance },
{ typeof(BssomNull),BssomNullFormatter.Instance },
{ typeof(BssomMap),BssomMapFormatter.Instance },
{ typeof(BssomValue),BssomValueFormatter.Instance },
{ typeof(BssomGuid), BssomGuidFormatter.Instance },
{ typeof(BssomFloat), BssomFloatFormatter.Instance },
{ typeof(BssomDecimal), BssomDecimalFormatter.Instance },
{ typeof(BssomBoolean), BssomBooleanFormatter.Instance },
{ typeof(BssomDateTime), BssomDateTimeFormatter.Instance },
{ typeof(BssomChar), BssomCharFormatter.Instance },
};
internal static bool TryGetFormatter(Type t, out IBssomFormatter formatter)
{
if (FormatterMap.TryGetValue(t, out formatter))
{
return true;
}
return false;
}
}
}