private static List <Tuple <String, String, object> > RunMethods(ViableMapAndData aMap, List <dynamic> objects) { List <Tuple <String, String, object> > results = new List <Tuple <String, String, object> >(); var methodStore = aMap.StoredData.Where(x => x.MapType.Equals(DataMapType.MethodParameterMap) && !x.DataStoreName.Equals(ParameterExtruder.Constructor)); if (methodStore.Any()) { foreach (DataStore aStore in methodStore) { foreach (DataRow aRow in aStore.ActualData.Rows) { foreach (dynamic anObject in objects) { MethodInfo method = anObject.GetType().GetMethod(aStore.DataStoreName); List <object[]> paramList = ParameterExtruder.BuildParameterArrayList(aMap, method.Name); if (paramList.Count > 0) { foreach (Object[] parameters in paramList) { results.Add(InvokeMethod(method, anObject, parameters, aStore.DataStoreName)); } } else { results.Add(InvokeMethod(method, anObject, null, aStore.DataStoreName)); } } } } } return(results); }
/// <summary> /// creates objects with parameters in their constructors /// </summary> /// <param name="fileName"></param> /// <param name="anAssembly"></param> private static List <dynamic> CreateAndInitializeFields(ViableMapAndData aMap, Assembly anAssembly) { List <dynamic> result = new List <dynamic>(); List <Object[]> parameterList = ParameterExtruder.BuildParameterArrayList(aMap, ".ctor"); if (parameterList.Count > 0) { foreach (Object[] parameters in parameterList) { result.AddRange(CreateAndInitializeFields(aMap, anAssembly, parameters)); } } else { result.AddRange(CreateAndInitializeFields(aMap, anAssembly, null)); } return(result); }
private static List <Tuple <String, String, object> > CreateObjectInitializeFieldsAndRunMethods(ViableMapAndData aMap, Assembly anAssembly) { List <Tuple <String, String, object> > results = new List <Tuple <String, String, object> >(); List <dynamic> injectedObjects = new List <dynamic>(); List <Object[]> constructorParams = ParameterExtruder.BuildParameterArrayList(aMap, ParameterExtruder.Constructor); foreach (Object[] ctorParameters in constructorParams) { injectedObjects.Add(CreateAndInitializeFields(aMap, anAssembly, ctorParameters)); } if (injectedObjects.Any()) { results = RunMethods(aMap, injectedObjects); } return(results); }