BTDB.EventStore2Layer.EventDeserializer.LoaderFactory C# (CSharp) Метод

LoaderFactory() приватный Метод

private LoaderFactory ( ITypeDescriptor descriptor ) : Func
descriptor ITypeDescriptor
Результат Func
        Func<AbstractBufferedReader, ITypeBinaryDeserializerContext, ITypeDescriptor, object> LoaderFactory(ITypeDescriptor descriptor)
        {
            var loadAsType = LoadAsType(descriptor);
            var methodBuilder = ILBuilder.Instance.NewMethod<Func<AbstractBufferedReader, ITypeBinaryDeserializerContext, ITypeDescriptor, object>>("DeserializerFor" + descriptor.Name);
            var il = methodBuilder.Generator;
            descriptor.GenerateLoad(il, ilGen => ilGen.Ldarg(0), ilGen => ilGen.Ldarg(1), ilGen => ilGen.Ldarg(2), loadAsType);
            if (loadAsType.IsValueType)
            {
                il.Box(loadAsType);
            }
            else if (loadAsType != typeof(object))
            {
                il.Castclass(typeof(object));
            }
            il.Ret();
            return methodBuilder.Create();
        }