Resolvers
PrimitiveResolver.cs
//using System.Runtime.CompilerServices;
using Bssom.Serializer.Formatters;
using Bssom.Serializer.Internal;
using System;
using System.Collections.Generic;
namespace Bssom.Serializer.Resolvers
{
///
/// Provides formatters for ,,,,,,,,,,,,,,,
///
public sealed clast PrimitiveResolver : IFormatterResolver
{
///
/// The singleton instance that can be used.
///
public static readonly PrimitiveResolver Instance = new PrimitiveResolver();
public IBssomFormatter GetFormatter()
{
return FormatterCache.Formatter;
}
private static clast FormatterCache
{
public static readonly IBssomFormatter Formatter;
static FormatterCache()
{
Type t = typeof(T);
if (PrimitiveResolverGetFormatterHelper.TryGetFormatter(t, out IBssomFormatter formatter))
{
Formatter = (IBssomFormatter)formatter;
}
}
}
}
}
namespace Bssom.Serializer.Internal
{
internal static clast PrimitiveResolverGetFormatterHelper
{
private static readonly Dictionary FormatterMap = new Dictionary()
{
{ typeof(sbyte), Int8Formatter.Instance },
{ typeof(Int16), Int16Formatter.Instance },
{ typeof(Int32), Int32Formatter.Instance },
{ typeof(Int64), Int64Formatter.Instance },
{ typeof(byte), UInt8Formatter.Instance },
{ typeof(UInt16), UInt16Formatter.Instance },
{ typeof(UInt32), UInt32Formatter.Instance },
{ typeof(UInt64), UInt64Formatter.Instance },
{ typeof(Single), Float32Formatter.Instance },
{ typeof(Double), Float64Formatter.Instance },
{ typeof(bool), BooleanFormatter.Instance },
{ typeof(string), StringFormatter.Instance },
{ typeof(DateTime), DateTimeFormatter.Instance },
//native
{ typeof(char), CharFormatter.Instance },
{ typeof(Guid), GuidFormatter.Instance },
{ typeof(Decimal), DecimalFormatter.Instance },
};
internal static bool TryGetFormatter(Type t, out IBssomFormatter formatter)
{
if (FormatterMap.TryGetValue(t, out formatter))
{
return true;
}
return false;
}
}
}