public override object DoRun() { if (string.IsNullOrEmpty(Variable)) { throw new ArgumentException("Variable name cannot be empty"); } if (string.IsNullOrEmpty(What)) { throw new ArgumentException("Value cannot be empty"); } if (Variable.Contains("[") || Variable.Contains("]")) { throw new ArgumentException("Variable name must not contain [] brackets. Please use brackets to reference an existing variable later, not while decalaring it."); } var existingMemory = Data.GetAll <RememberedText>().FirstOrDefault(x => x.Variable.ToLower() == Variable.ToLower()); if (existingMemory != null) { existingMemory.What = What; return(new SuccessAnswer($"Updated '{existingMemory.Variable}' to new value \'{existingMemory.What}\' to memory.")); } else { var rememberedText = new RememberedText(Variable, What); Data.DataAccesses.OfType <SharedObjectDataAccess>().First().Add(rememberedText); return(new SuccessAnswer($"Saved \'{rememberedText.What}\' as variable '{rememberedText.Variable}'.")); } }
public ObjectDataAccess CreateFromArguments(string[] arguments) { var objectDataAccess = new ObjectDataAccess(); var nonparametricArguments = arguments.Where(x => !x.Contains("=")).ToList(); var parametricArguments = arguments.Where(x => x.Contains("=")).ToList(); foreach (var parametricArgument in parametricArguments) { var name = parametricArgument.Substring(1, parametricArgument.IndexOf('=') - 1); var value = parametricArgument.Substring(parametricArgument.IndexOf('=') + 1); var rememberedText = new RememberedText(name, value); SharedObjectDataAccess.Instance.Value.Add(rememberedText); } foreach (var argument in nonparametricArguments) { var dtoTypes = (IEnumerable <Type>)_registry.Types; var type = dtoTypes.FirstOrDefault(registeredType => registeredType.Name.ToLower() == argument.Substring(1).ToLower()); if (type == null) { //throw new ArgumentException($"Argument {argument} is not recognized."); objectDataAccess.Add(new CorruptObject() { Description = $"Argument {argument} is not recognized." }); continue; } var instance = Activator.CreateInstance(type); objectDataAccess.Add(instance); } foreach (var obj in objectDataAccess.GetAll()) { (obj as Keyword)?.Hydrate(); } return(objectDataAccess); }