private T GetRandomItemFromMethod <T>(string methodName, FakerBase obj) { Type type = obj.GetType(); var method = type.GetMethod(methodName); return((T)method.Invoke(obj, null)); }
internal FakerBase GetFakerObjectFromName(string name) { if (this.fakerDictionary.ContainsKey(name)) { return(this.fakerDictionary[name]); } // If it is the first time, create the FakerBase and add it to the dictionary Type t = Assembly.GetExecutingAssembly().GetType("Faker." + name); FakerBase faker = Activator.CreateInstance(t, this.localeType) as FakerBase; this.fakerDictionary.Add(name, faker); return(faker); }
internal string FillInRandomDataFromMethod(string format) { string result = format; string pattern = @"\@\{(?<" + methodName + @">[A-Za-z.]+)\}"; var matches = Regex.Matches(format, pattern); while (matches.Count > 0) { Match match = matches[0]; string fullNameSpaces = match.Groups[methodName].Value; string[] names = fullNameSpaces.Split('.'); string[] namespaceArray = new string[names.Length - 1]; Array.Copy(names, namespaceArray, names.Length - 1); string nameSpace = string.Join(".", namespaceArray); string methodname = names[names.Length - 1]; FakerBase faker = this.GetFakerObjectFromName(nameSpace); result = result.Remove(match.Index, match.Length).Insert(match.Index, GetRandomItemFromMethod <string>(methodname, faker)); matches = Regex.Matches(result, pattern); } return(result); }