public static object Execute(Type type, object objeto, string metodo, params object[] parametros) { var metodoInvoke = type.GetMethod(metodo); var metodoParameters = metodoInvoke.GetParameters(); var metodoValues = new List <object>(); int index = 0; foreach (var parameter in metodoParameters) { if (index >= parametros.Length) { metodoValues.Add(null); } else if (parameter.ParameterType.IsInterface) { metodoValues.Add(parametros[index]); } else if (parametros[index] is FilterObjeto) { metodoValues.Add(parametros[index]); } else { metodoValues.Add(ObjetoMapper.GetObjetoRetorno(parameter.ParameterType, parametros[index])); } index++; } return(metodoInvoke?.Invoke(objeto, metodoValues.ToArray()));; }
public static object Execute(Type typeRetorno, string metodo, object instance, object owner = null) { var serviceNome = GetServiceNome(instance, owner); var metodoNome = GetMetodoNome(instance, owner); var serviceObjeto = AbstractContainer.Instance.Resolve(serviceNome); var serviveRetorno = ObjetoExecute.Execute(serviceObjeto, metodoNome, new[] { instance }); return(ObjetoMapper.GetObjetoRetorno(typeRetorno, serviveRetorno)); }