public IAEActionViewModel NewAEActionViewModel(AEAction aEAction) { if (!AEActionDict.ContainsKey(aEAction)) { throw new NotImplementedException("The AEAction is not implemented"); } Type instanceType = AEActionDict[aEAction]; var constructorInfos = instanceType.GetConstructors(); //TODO: Add a way to choose constructor var constructorInfo = constructorInfos[0]; var parameters = constructorInfo.GetParameters(); var parametersInstance = new List <object>(); foreach (var param in parameters) { if (!DependencyDict.ContainsKey(param.ParameterType)) { throw new NotImplementedException("The Dependency of " + param.ParameterType + " " + "is not implemented"); } parametersInstance.Add(DependencyDict[param.ParameterType]); } return((IAEActionViewModel)constructorInfo.Invoke(parametersInstance.ToArray())); }
public TurnViewModel NewTurn(AEAction aEAction) { if (!turnDict.ContainsKey(aEAction)) { throw new NotImplementedException("The turn for this action has not yet implement"); } return((TurnViewModel)Activator.CreateInstance(turnDict[aEAction])); }