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); }
private DynamicFunctionWithParam NewItemDelegate(dynamic model) { var newItemDelegate = new DynamicFunctionWithParam(attributes => { return EntityFor(model, attributes); }); return newItemDelegate; }
private DynamicFunctionWithParam NewItemDelegate(dynamic model) { var newItemDelegate = new DynamicFunctionWithParam(attributes => { return(EntityFor(model, attributes)); }); return(newItemDelegate); }
public DynamicFunctionWithParam NewItemDelegate() { var newItemDelegate = new DynamicFunctionWithParam(attributes => { return(EntityFor(attributes)); }); return(newItemDelegate); }
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 DynamicFunctionWithParam NewItemDelegate() { var newItemDelegate = new DynamicFunctionWithParam(attributes => { return EntityFor(attributes); }); return newItemDelegate; }