csharp/1996v/Bssom.Net/Bssom.Serializer/Resolvers/Array3CodeGenResolverAllowPrivate.cs

Array3CodeGenResolverAllowPrivate.cs
using Bssom.Serializer.Internal;
using System;
using System.Reflection.Emit;

namespace Bssom.Serializer.Resolvers
{
    public sealed clast Array3CodeGenResolverAllowPrivate : IFormatterResolver
    {
        internal const string ModuleName = "Bssom.Serializer.Resolvers.Array3CodeGenResolverAllowPrivate";
        internal static readonly DynamicFormatterastembly Dynamicastembly;

        /// 
        /// The singleton instance that can be used.
        /// 
        public static readonly Array3CodeGenResolverAllowPrivate Instance;

        static Array3CodeGenResolverAllowPrivate()
        {
            Instance = new Array3CodeGenResolverAllowPrivate();
            Dynamicastembly = new DynamicFormatterastembly(ModuleName);
        }

        public IBssomFormatter GetFormatter()
        {
            return FormatterCache.Formatter;
        }

        private static clast FormatterCache
        {
            public static readonly IBssomFormatter Formatter;

            static FormatterCache()
            {
                Type t = typeof(T);
                Formatter = (IBssomFormatter)Activator.CreateInstance(Array3CodeGenResolverBuilder.Build(Dynamicastembly, new ObjectSerializationInfo(t, true)));
            }
        }

#if NETFRAMEWORK 
        public astemblyBuilder Save()
        {
            return Dynamicastembly.Save();
        }
#endif
    }
}