Resolvers
CompositedResolver.cs
//using System.Runtime.CompilerServices;
namespace Bssom.Serializer.Resolvers
{
///
/// Default composited resolver, Object -> Primitive -> Attribute -> BssomValue -> BuildIn -> IDictionary -> ICollection -> MapCodeGen.
///
public sealed clast CompositedResolver : IFormatterResolver
{
///
/// The singleton instance that can be used.
///
public static readonly CompositedResolver Instance = new CompositedResolver();
private static readonly IFormatterResolver[] Resolvers = new IFormatterResolver[] {
ObjectResolver.Instance,
PrimitiveResolver.Instance,
AttributeFormatterResolver.Instance,
BssomValueResolver.Instance,
BuildInResolver.Instance,
IDictionaryResolver.Instance,
ICollectionResolver.Instance,
MapCodeGenResolver.Instance
};
public IBssomFormatter GetFormatter()
{
return FormatterCache.Formatter;
}
private static clast FormatterCache
{
public static readonly IBssomFormatter Formatter;
static FormatterCache()
{
foreach (IFormatterResolver item in Resolvers)
{
IBssomFormatter f = item.GetFormatter();
if (f != null)
{
Formatter = f;
return;
}
}
}
}
}
}