Exemple #1
0
        DynamicFunctionWithParam CreateCachedMethodFor(DynamicFunctionWithParam @delegate)
        {
            var methodName = (@delegate as Delegate).Method.Name;

            var newDelegate = new DynamicFunctionWithParam(originalParameters =>
            {
                dynamic arguments = null;

                if (originalParameters is Gemini) arguments = originalParameters.HashOfProperties();

                else if (IsValueType(originalParameters)) arguments = originalParameters;

                else arguments = new Gemini(originalParameters).HashOfProperties();

                var cachedValue = null as object;

                if (HasSameArgumgents(methodName, arguments, out cachedValue)) return cachedValue;

                var result = (@delegate as Delegate).Method.Invoke(instance, new[] { originalParameters });

                parameterizedFunctions.Add(
                    new KeyValuePair<MemoizedMethod, object>(
                        new MemoizedMethod { Name = methodName, Arguments = arguments },
                        result));

                return result;
            });

            return newDelegate;
        }
        public StrongParameters(dynamic gemini)
        {
            gemini.Permit = new DynamicFunctionWithParam(Permit);

            originalSetMembers = gemini.GetMember("SetMembers") as DynamicFunctionWithParam;

            gemini.SetMembers = new DynamicFunctionWithParam(SetMembers);
        }
Exemple #3
0
        public StrongParameters(dynamic gemini)
        {
            gemini.Permit = new DynamicFunctionWithParam(Permit);

            originalSetMembers = gemini.GetMember("SetMembers") as DynamicFunctionWithParam;

            gemini.SetMembers = new DynamicFunctionWithParam(SetMembers);
        }
Exemple #4
0
        private DynamicFunctionWithParam NewItemDelegate(dynamic model)
        {
            var newItemDelegate = new DynamicFunctionWithParam(attributes =>
            {
                return EntityFor(model, attributes);
            });

            return newItemDelegate;
        }
Exemple #5
0
        private DynamicFunctionWithParam NewItemDelegate(dynamic model)
        {
            var newItemDelegate = new DynamicFunctionWithParam(attributes =>
            {
                return(EntityFor(model, attributes));
            });

            return(newItemDelegate);
        }
Exemple #6
0
        public DynamicFunctionWithParam NewItemDelegate()
        {
            var newItemDelegate = new DynamicFunctionWithParam(attributes =>
            {
                return(EntityFor(attributes));
            });

            return(newItemDelegate);
        }
Exemple #7
0
        DynamicFunctionWithParam CreateCachedMethodFor(DynamicFunctionWithParam @delegate)
        {
            var methodName = (@delegate as Delegate).Method.Name;

            var newDelegate = new DynamicFunctionWithParam(originalParameters =>
            {
                dynamic arguments = null;

                if (originalParameters is Gemini)
                {
                    arguments = originalParameters.HashOfProperties();
                }

                else if (IsValueType(originalParameters))
                {
                    arguments = originalParameters;
                }

                else
                {
                    arguments = new Gemini(originalParameters).HashOfProperties();
                }

                var cachedValue = null as object;

                if (HasSameArgumgents(methodName, arguments, out cachedValue))
                {
                    return(cachedValue);
                }

                var result = (@delegate as Delegate).Method.Invoke(instance, new[] { originalParameters });

                parameterizedFunctions.Add(
                    new KeyValuePair <MemoizedMethod, object>(
                        new MemoizedMethod {
                    Name = methodName, Arguments = arguments
                },
                        result));

                return(result);
            });

            return(newDelegate);
        }
Exemple #8
0
        public DynamicFunctionWithParam NewItemDelegate()
        {
            var newItemDelegate = new DynamicFunctionWithParam(attributes =>
            {
                return EntityFor(attributes);
            });

            return newItemDelegate;
        }