public Faker() { List <Assembly> Plugins = Plugin.LoadPlugin(Path.GetDirectoryName(Directory.GetParent(Environment.CurrentDirectory).Parent.FullName) + Plugin.path + "ByteGenerator.dll", Path.GetDirectoryName(Directory.GetParent(Environment.CurrentDirectory).Parent.FullName) + Plugin.path + "FloatGenerator.dll"); Generators = Plugin.GetGenerators(Plugins); Generators.Add(typeof(int), new IntGenerator()); Generators.Add(typeof(bool), new BoolGenerator()); Generators.Add(typeof(DateTime), new DateTimeGenerator()); Generators.Add(typeof(char), new CharGenerator()); Generators.Add(typeof(double), new DoubleGenerator()); Generators.Add(typeof(long), new LongGenerator()); Generators.Add(typeof(string), new StringGenerator()); listGenerator = new ListGenerator(Generators, this); }
public object Create <T>() { var type = typeof(T); if (_exludedTypes.Contains(type)) { return(null); } _exludedTypes.Add(type); if (type.IsAbstract || type.IsInterface || type.IsPointer) { return(null); } if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List <>)) { var listGenerator = new ListGenerator(); _exludedTypes.Remove(type); return((T)listGenerator.Generate(type.GetGenericArguments()[0])); } if (_generators.TryGetValue(type, out var generator)) { _exludedTypes.Remove(type); return((T)generator.Generate(type)); } if (type.IsClass && !type.IsGenericType) { var instance = InitializeWithConstructor(type); if (instance != null) { FillObject(instance); } _exludedTypes.Remove(type); return(instance); } if (type.IsValueType && !type.IsGenericType) { var instance = default(T); if (instance != null) { FillObject(instance); _exludedTypes.Remove(type); return(instance); } } _exludedTypes.Remove(type); return(default(T)); }
public object GenerateValue(Type type) { object result = null; Func <Random, object> genDelegate = null; if (type.IsGenericType && (type.GetInterface(nameof(IList)) != null)) { result = new ListGenerator(type.GenericTypeArguments[0]).GenerateValue(FakerSingleton.random); } else if (generatorsDict.TryGetValue(type, out genDelegate)) { result = genDelegate(FakerSingleton.random); } else { if (!FakerSingleton.getInstance().antiCycleList.Contains(type)) { result = FakerSingleton.getInstance().Create(type); } } return(result); }