/// <summary> /// Will autonumber the identity property /// </summary> /// <typeparam name="TProperty"></typeparam> /// <param name="property"></param> /// <returns></returns> public static AutoFaker <TType> Identity <TType, TProperty>(this AutoFaker <TType> src, Expression <Func <TType, TProperty> > property) where TType : class { var rule = new FakerRule <TType, TProperty> { Property = property, Setter = f => { var genericType = typeof(TProperty); //var specificType = genericType.MakeGenericType(typeof(TProperty), property); var castMethod = typeof(TemplateExtensions).GetMethod("Cast") !.MakeGenericMethod(new Type[] { genericType }); var castedObject = castMethod.Invoke(null, new object[] { f.IndexFaker }); return((TProperty)castedObject !); } }; src.RegisterRule(rule); return(src); }
/// <summary> /// Tells the generator not to generate a value, but to use the default value for the type /// </summary> /// <typeparam name="TProperty"></typeparam> /// <typeparam name="TType"></typeparam> /// <param name="property"></param> /// <returns></returns> public static AutoFaker <TType> Ignore <TType, TProperty>(this AutoFaker <TType> src, Expression <Func <TType, TProperty> > property) where TType : class { //if we ignore we will get the default value for the type var defaultObj = Activator.CreateInstance <TType>(); var prop = typeof(TType).GetProperty(ReflectionHelper.GetMemberName(property.Body), BindingFlags.Public | BindingFlags.Instance); var valueOfProperty = (TProperty)prop !.GetValue(defaultObj) !; var setter = new Func <Faker, TProperty>(f => valueOfProperty); var rule = new FakerRule <TType, TProperty> { Property = property, Setter = setter }; src.RegisterRule(rule); return(src); }