/// <summary> /// Invokes generic method /// </summary> /// <param name="instance">Object to invoke generic method on</param> /// <param name="typeList">Generic parameter list</param> /// <param name="parameters">Method parameters</param> public object Invoke(object instance, GenericParameterList typeList, params object[] parameters) { if (!GenericMethodCache.ContainsKey(typeList)) { lock (GenericMethodCache) { if (!GenericMethodCache.ContainsKey(typeList)) { GenericMethodCache[typeList] = GenericMethod.MakeGenericMethod(typeList.Types); } } } var method = GenericMethodCache[typeList]; return(method.FastInvoke(instance, parameters)); }