Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }