public void Serialize(object instance, BinaryWriter binaryWriter, MemoryStream ms, ISurrogateContext context)
        {
            Type         outType = null;
            IStateObject model   = null;

            PromiseUtils.SerializeStateForDelegate(StateManager.Current, instance, binaryWriter, _oType, out outType, out model);
        }
        public object Deserialize(BinaryReader binaryReader, ISurrogateContext context)
        {
            string fieldName           = null;
            var    delegateHiddenClass = Activator.CreateInstance(_oType);

            PromiseUtils.DeserializeStateForDelegate(binaryReader, _oType, delegateHiddenClass, ref fieldName);
            return(delegateHiddenClass);
        }
        public IList <object> CalculateDependencies(object value, ISurrogateDependenciesContext dependenciesContext)
        {
            IList <object> dependencies = null;

            PromiseUtils.CalculateDependencies(value, _oType, ref dependencies);
            if (dependencies == null)
            {
                dependencies = EMPTY_LIST;
            }
            return(dependencies);
        }
        public object Deserialize(BinaryReader binaryReader, ISurrogateContext context)
        {
            var declaringTypeAsString = binaryReader.ReadString();
            var declaringType         = TypeCacheUtils.GetType(declaringTypeAsString);
            var methodName            = binaryReader.ReadString();

            var target = context.Dependencies[0];

            var methodInfo = declaringType.GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);

            return(PromiseUtils.CreateDelegateFromMethodInfo(target, methodInfo));
        }