示例#1
0
 public FieldApiController(IFormProvider formProvider, IFieldProvider fieldProvider, IControlMatcher controlMatcher, IHumanizer humanizer)
 {
     FormProvider   = formProvider;
     FieldProvider  = fieldProvider;
     ControlMatcher = controlMatcher;
     Humanizer      = humanizer;
 }
示例#2
0
        public static IDictionary <string, IFieldReader <TItem> > GetReaders <TItem>(this IFieldProvider <TItem> fieldProvider, [NotNull] IEnumerable <string> fieldNames)
            where TItem : class
        {
            if (fieldProvider == null)
            {
                throw new ArgumentNullException(nameof(fieldProvider));
            }
            if (fieldNames == null)
            {
                throw new ArgumentNullException(nameof(fieldNames));
            }

            var dict = new Dictionary <string, IFieldReader <TItem> >();

            foreach (string fieldName in fieldNames)
            {
                if (!fieldProvider.FieldExists(fieldName))
                {
                    throw new FieldNotFoundException(fieldName, false);
                }

                IFieldReader <TItem> reader = fieldProvider.GetReader(fieldName);
                if (reader == null)
                {
                    throw new FieldOperationNotAllowedException(fieldName, FieldOperation.Read);
                }

                dict.Add(fieldName, reader);
            }

            return(dict);
        }
        private Expression ParseFieldExpression()
        {
            ParameterExpression key          = Expression.Parameter(typeof(int), "index");
            IFieldContext       fieldContext = new FieldContext(this, key);

            LabelTarget labelBreak = Expression.Label("_break");

            ParseFieldProviderExpressions providerExpressions = null;

            if (_providers.Count == 1)
            {
                IFieldProvider provider = _providers[0];
                providerExpressions = new ParseFieldProviderExpressions(provider, fieldContext);

                return(ParseFieldPart(fieldContext, providerExpressions));
            }
            else
            {
                List <ParseFieldProviderExpressions> providerExpressionsList = _providers
                                                                               .Select(p => new ParseFieldProviderExpressions(p, fieldContext))
                                                                               .ToList();

                IEnumerable <Expression> providerParseParts = ParseFieldProviderParts(fieldContext, providerExpressionsList);
                return(Expression.Block(providerParseParts.ToArray()));
            }
        }
示例#4
0
        public static Type GetDynamicType <TItem>(IFieldProvider <TItem> fieldProvider, IEnumerable <string> fields)
            where TItem : class
        {
            var  dynamicFields = fields.Select(f => new KeyValuePair <string, Type>(f, fieldProvider.GetReader(f).FieldType));
            Type dynamicType   = LinqRuntimeTypeBuilder.GetDynamicType(dynamicFields);

            return(dynamicType);
        }
示例#5
0
 public SectionAppearanceConverter(IMetadataProvider metadataProvider, IDestMasterRepository destMasterRepository, IItemConverter itemConverter, IItemFactory itemFactory, IFieldProvider fieldProvider, AppSettings appSettings)
     : base(destMasterRepository, itemConverter, itemFactory, appSettings)
 {
     _destMasterRepository = destMasterRepository;
     _metadataProvider     = metadataProvider;
     _fieldProvider        = fieldProvider;
     _appSettings          = appSettings;
 }
 public SubmitConverter(IMetadataProvider metadataProvider, IDestMasterRepository destMasterRepository, IItemConverter itemConverter, IItemFactory itemFactory, IFieldProvider fieldProvider, AppSettings appSettings, IReporter analysisReporter)
     : base(destMasterRepository, itemConverter, itemFactory, appSettings)
 {
     _destMasterRepository = destMasterRepository;
     _metadataProvider     = metadataProvider;
     _fieldProvider        = fieldProvider;
     _appSettings          = appSettings;
     _analysisReporter     = analysisReporter;
 }
示例#7
0
 public FieldApiController(ILogger <FieldApiController> logger, IFormProvider formProvider, IFieldProvider fieldProvider, IControlMatcher controlMatcher, IHumanizer humanizer, IPluralizer pluralizer, ISingularizer singularizer)
 {
     Logger         = logger;
     FormProvider   = formProvider;
     FieldProvider  = fieldProvider;
     ControlMatcher = controlMatcher;
     Humanizer      = humanizer;
     Pluralizer     = pluralizer;
     Singularizer   = singularizer;
 }
示例#8
0
        public MemberInitExpression Build <TItem>(ParameterExpression itemPram, IFieldProvider <TItem> fieldProvider)
            where TItem : class
        {
            return(Build(delegate(FieldInfo fi)
            {
                IFieldReader <TItem> reader = fieldProvider.GetReader(fi.Name);
                Debug.Assert(reader != null, "Reader should definitely not be null here.");

                return Expression.Bind(fi, reader.GetSelectExpression(itemPram));
            }));
        }
        public static bool TryGetModelValue <T>(this IFieldProvider fieldProvider, object model, out T value)
        {
            if (!fieldProvider.TryGetModelValue(model, out object val))
            {
                value = default;
                return(false);
            }

            value = (T)val;
            return(true);
        }
示例#10
0
        internal static LambdaExpression GetMemberInitLambda <TNav>(IFieldProvider <TNav> fieldProvider)
            where TNav : class
        {
            ParameterExpression navigationParam = Expression.Parameter(typeof(TNav), "n");

            Type dynamicType                    = FieldProviderUtility.GetDynamicType(fieldProvider);
            var  initExpressionBuilder          = new MemberInitExpressionBuilder(dynamicType);
            MemberInitExpression memberInitExpr = initExpressionBuilder.Build(navigationParam, fieldProvider);

            var nullCondition = ExpressionTreeHelpers.NullConditional(memberInitExpr, navigationParam);

            var nullCheckInitLambda = Expression.Lambda(nullCondition, navigationParam);

            return(nullCheckInitLambda);
        }
        public bool TryGetField(string fieldName, out IFieldProvider field)
        {
            if (fieldName == null)
            {
                throw new ArgumentNullException(nameof(fieldName));
            }

            if (!fieldNames.TryGetValue(fieldName.ToLower(), out int index))
            {
                field = null;
                return(false);
            }
            field = fields[index];
            return(true);
        }
示例#12
0
        public InjectedEngineContext([NotNull] IDataTransaction transaction, [NotNull] IEngineRepository <TItem> repository,
                                     [NotNull] IIdentifierProvider <TItem> identifiers, [NotNull] IFieldProvider <TItem> fields,
                                     [NotNull] IAuthorizationChecker <TItem> authorizationChecker)
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }
            if (fields == null)
            {
                throw new ArgumentNullException(nameof(fields));
            }
            if (authorizationChecker == null)
            {
                throw new ArgumentNullException(nameof(authorizationChecker));
            }

            Repository           = repository;
            Identifiers          = identifiers;
            Fields               = fields;
            AuthorizationChecker = authorizationChecker;
            Transaction          = transaction;
        }
示例#13
0
文件: Board.cs 项目: sommen01/Seega
 private void Construct(PhysicsCache physicsCache,
                        EventManager eventManager,
                        IRayProvider rayProvider,
                        ISelector selector,
                        IFieldProvider fieldProvider,
                        IPieceProvider pieceProvider,
                        ICaptureVerifier captureVerifier,
                        IGameFinisher gameFinisher,
                        IPhaseManager phaseManager,
                        ITurnManager turnManager,
                        IWallVerifier wallVerifier)
 {
     _physicsCache    = physicsCache;
     _eventManager    = eventManager;
     _rayProvider     = rayProvider;
     _selector        = selector;
     _fieldProvider   = fieldProvider;
     _pieceProvider   = pieceProvider;
     _captureVerifier = captureVerifier;
     _gameFinisher    = gameFinisher;
     _phaseManager    = phaseManager;
     _turnManager     = turnManager;
     _wallVerifier    = wallVerifier;
 }
 public FormInstanceInitializer(IFormProvider formProvider, IFieldProvider fieldProvider, IPropertySetter propertySetter)
 {
     FormProvider   = formProvider;
     FieldProvider  = fieldProvider;
     PropertySetter = propertySetter;
 }
示例#15
0
 public static IDictionary <string, IFieldReader <TItem> > GetReaders <TItem>(this IFieldProvider <TItem> fieldProvider, int nestedBy)
     where TItem : class
 {
     return(fieldProvider.GetReaders(fieldProvider.GetDefaultNames(nestedBy)));
 }
示例#16
0
        // some similarities here with QueryableFieldSelectorBase

        public static Type GetDynamicType <TItem>(IFieldProvider <TItem> fieldProvider, int nestedBy = 1)
            where TItem : class
        {
            return(GetDynamicType(fieldProvider, fieldProvider.GetDefaultNames(nestedBy)));
        }
 public ParseFieldProviderExpressions(IFieldProvider provider, IFieldContext fieldContext)
 {
     StartingIndex = Expression.Constant(provider.StartingIndex);
     DeserializeAndSaveFieldExpression = provider.DeserializeAndSaveFieldExpression(fieldContext);
 }
        private Expression FillFieldListPart(IFieldProvider provider)
        {
            ParameterExpression keyEnumerator     = Expression.Parameter(typeof(IEnumerator <int>), "keyEnumerator");
            ParameterExpression key               = Expression.Parameter(typeof(int), "key");
            ParameterExpression lastFieldPosition = Expression.Parameter(typeof(long), "lastFieldPosition");

            LabelTarget labelTargetContinue = Expression.Label("_continue");
            LabelTarget labelTargetBreak    = Expression.Label("_break");

            return(Expression.Block(
                       new ParameterExpression[] { key, keyEnumerator },

                       Expression.Assign(
                           keyEnumerator,
                           Expression.Call(
                               provider.KeyEnumerableExpression(this),
                               _getIntEnumerator)),

                       Expression.TryFinally(
                           Expression.Loop(
                               Expression.IfThenElse(
                                   Expression.Call(keyEnumerator, _intMoveNext),

                                   Expression.Block(
                                       new ParameterExpression[] { lastFieldPosition },

                                       Expression.Assign(key, Expression.Property(keyEnumerator, _intCurrent)),

                                       Expression.IfThen(
                                           Expression.Not(provider.ShouldSkipFieldExpression(new FieldContext(this, key))),

                                           Expression.Block(
                                               Expression.Assign(
                                                   lastFieldPosition,
                                                   Expression.Property(FillFieldListParams.DataStream, _streamPositionProperty)),

                                               provider.SerializeFieldExpression(new FieldContext(this, key)),

                                               Expression.Call(
                                                   FillFieldListParams.FieldLengths,
                                                   _listAddMethod,
                                                   Expression.New(
                                                       _fieldLengthInfoCtor,
                                                       Expression.Add(Expression.Constant(provider.StartingIndex), key),
                                                       Expression.Subtract(
                                                           Expression.Property(FillFieldListParams.DataStream, _streamPositionProperty),
                                                           lastFieldPosition)))
                                               )
                                           )
                                       ),

                                   Expression.Break(labelTargetBreak)),

                               labelTargetBreak,
                               labelTargetContinue),

                           Expression.IfThen(
                               Expression.NotEqual(keyEnumerator, Expression.Constant(null)),
                               Expression.Call(keyEnumerator, _dispose)))
                       ));
        }
示例#19
0
 private void Construct(IFieldProvider fieldProvider)
 {
     _fieldProvider = fieldProvider;
 }
 public QueryableFieldFilter(IFieldProvider <TItem> fieldProvider, [CanBeNull] IEnumerable <FilterInstruction> instructions)
 {
     _fieldProvider = fieldProvider;
     _instructions  = instructions;
 }
示例#21
0
 public QueryableFieldSetter([NotNull] IDataTransaction dataTransaction, [NotNull] IFieldProvider <TItem> fieldProvider, [NotNull] IAuthorizationChecker <TItem> authChecker)
 {
     _dataTransaction = dataTransaction ?? throw new ArgumentNullException(nameof(dataTransaction));
     _fieldProvider   = fieldProvider ?? throw new ArgumentNullException(nameof(fieldProvider));
     _authChecker     = authChecker ?? throw new ArgumentNullException(nameof(authChecker));
 }
 public QueryableFieldSelector([NotNull] IFieldProvider <TItem> fieldProvider, [NotNull] IEnumerable <string> fieldNames)
     : this(fieldProvider.GetReaders(fieldNames))
 {
 }
示例#23
0
 internal NamedField(string name, IFieldProvider <TItem> provider)
 {
     _lazyReader = new Lazy <IFieldReader <TItem> >(() => provider.GetReader(name));
     _lazyWriter = new Lazy <IFieldWriter <TItem> >(() => provider.GetWriter(name));
     Name        = name;
 }
        public static T GetModelValue <T>(this IFieldProvider fieldProvider, object model)
        {
            var value = fieldProvider.GetModelValue(model);

            return((T)value);
        }
示例#25
0
 public FieldAuthChecker(IFieldProvider <TItem> fieldProvider, IAuthorizationChecker <TItem> authChecker, IDeferredItem <TItem> item)
 {
     _fieldProvider = fieldProvider;
     _authChecker   = authChecker;
     _item          = item;
 }
示例#26
0
 private void Construct(IFieldProvider fieldProvider, IGameFinisher gameFinisher)
 {
     _fieldProvider = fieldProvider;
     _gameFinisher  = gameFinisher;
 }
示例#27
0
 internal QueryableFieldSorter(IFieldProvider <TItem> fieldProvider, [CanBeNull] IEnumerable <SortInstruction> instructions)
 {
     _fieldProvider = fieldProvider;
     _instructions  = instructions;
 }