コード例 #1
0
 internal CompoundValueProvider(
     ValueProviderDictionary valueProviderDictionary,
     HashSet <IKey> autoFillMapping,
     IMemberSorter memberSorter,
     IMetadataResolver metadataResolver,
     IRandom random,
     IList <IInstanceModifier> instanceModifiers,
     IParameterConversionService parameterConversionService,
     IFastReflectionUtility fastReflectionUtility)
 {
     Random = random;
     _valueProviderDictionary = valueProviderDictionary;
     _autoFillMapping         = autoFillMapping;
     _memberSorter            = memberSorter;
     _metadataResolver        = metadataResolver;
     _fastReflectionUtility   = fastReflectionUtility;
     _instanceFactory         = new InstanceFactory(
         this,
         valueProviderDictionary,
         _memberSorter,
         _metadataResolver,
         parameterConversionService,
         fastReflectionUtility);
     _modificationFactory = new ModificationFactory(instanceModifiers, random);
 }
コード例 #2
0
        public BoundMetadataContext(MetadataObjectContext objectContext, IFastReflectionUtility fastReflectionUtility, IRandom random)
        {
            _objectContext = objectContext;

            FastReflection    = fastReflectionUtility;
            Random            = random;
            TestDataGenerator = objectContext.TestDataGenerator;
        }
コード例 #3
0
        protected internal DomainConfigurator()
            : base(null)
        {
            _lazyValueProviderBuilder = () => ValueProviderBuilder;

            _random      = DefaultRandom.Instance;
            _useDefaults = true;

            _parameterToPropertyConversionFunc = parameterName => parameterName[0].ToString().ToUpper() + parameterName.Substring(1);
            _fastReflectionUtility             = new FastReflectionUtility(new DefaultMemberExtensionService());
        }
コード例 #4
0
        internal CompoundValueProviderBuilder(IRandom random, IParameterConversionService parameterConversionService, IFastReflectionUtility fastReflectionUtility)
        {
            _random = random;
            _parameterConversionService = parameterConversionService;
            _fastReflectionUtility      = fastReflectionUtility;
            _valueProviderDictionary    = new ValueProviderDictionary();
            _autoFillMapping            = new HashSet <IKey>();
            _modifierList = new List <IInstanceModifier>();

            _tempContainerCountMapping = new Dictionary <Type, int>();
            _containerIndexMapping     = new Dictionary <IKey, int>();

            _metadataProviderMapping = new Dictionary <IKey, Func <MetadataObjectContext, object> >();
        }
コード例 #5
0
 public InstanceFactory(
     CompoundValueProvider compoundValueProvider,
     ValueProviderDictionary valueProviderDictionary,
     IMemberSorter memberSorter,
     IMetadataResolver metadataResolver,
     IParameterConversionService parameterConversionService,
     IFastReflectionUtility fastReflectionUtility)
 {
     _compoundValueProvider      = compoundValueProvider;
     _valueProviderDictionary    = valueProviderDictionary;
     _memberSorter               = memberSorter;
     _metadataResolver           = metadataResolver;
     _parameterConversionService = parameterConversionService;
     _fastReflectionUtility      = fastReflectionUtility;
 }
コード例 #6
0
 public AdvancedContext(
     IKey key,
     IMemberSorter memberSorter,
     IMetadataResolver metadataResolver,
     IParameterConversionService parameterConversionService,
     ITestDataGeneratorAdvanced advancedTestDataGenerator,
     IFastReflectionUtility fastReflectionUtility)
 {
     Key                        = key;
     MemberSorter               = memberSorter;
     MetadataResolver           = metadataResolver;
     ParameterConversionService = parameterConversionService;
     AdvancedTestDataGenerator  = advancedTestDataGenerator;
     FastReflection             = fastReflectionUtility;
 }
コード例 #7
0
 internal static IEnumerable <MemberKeyPart> ToChain(this LambdaExpression expression, IFastReflectionUtility fastReflectionUtility)
 {
     return(expression.Body.ToChain(fastReflectionUtility));
 }
コード例 #8
0
        internal static IEnumerable <MemberKeyPart> ToChain(this Expression expression, IFastReflectionUtility fastReflectionUtility)
        {
            var memberExpression = expression as MemberExpression;

            //DEBT: This is a hack to support convert statements (automatically introduced by the compiler).
            if (memberExpression == null)
            {
                var unaryExpression = expression as UnaryExpression;
                if (unaryExpression != null)
                {
                    memberExpression = unaryExpression.Operand as MemberExpression;
                }
            }

            if (memberExpression != null)
            {
                foreach (var chainKey in memberExpression.Expression.ToChain(fastReflectionUtility))
                {
                    yield return(chainKey);
                }

                var propertyInfo = memberExpression.Member as PropertyInfo;
                if (propertyInfo != null)
                {
                    yield return(new MemberKeyPart(fastReflectionUtility.GetPropertyInfo(propertyInfo)));
                }

                var fieldInfo = memberExpression.Member as FieldInfo;
                if (fieldInfo != null)
                {
                    yield return(new MemberKeyPart(fastReflectionUtility.GetFieldInfo(fieldInfo)));
                }

                if (propertyInfo == null && fieldInfo == null)
                {
                    throw new NotSupportedException(memberExpression.Member.Name + " is not a property or field, and thus not supported.");
                }
            }
        }
コード例 #9
0
 public ITestDataConfigurator UseMemberExtensionService(IMemberExtensionService memberExtensionService)
 {
     _fastReflectionUtility = new FastReflectionUtility(memberExtensionService);
     return(this);
 }
コード例 #10
0
        public static ChainedKey FromExpression <TContainer, TMember>(Expression <Func <TContainer, TMember> > chainExpression, IFastReflectionUtility fastReflectionUtility)
        {
            var declaringType = typeof(TContainer);

            var expressionChain = chainExpression.ToChain(fastReflectionUtility).ToList();

            if (expressionChain.Count == 0)
            {
                throw new NotSupportedException("Empty chains / Non-member chains are not supported, please use AddProvider<T>()");
            }

            var chainedKey = new ChainedKey(declaringType, expressionChain);

            return(chainedKey);
        }