Пример #1
0
        public Func<IRequest, IArguments, Context, object> BuildExecuteFunc(MethodInfo methodInfo, IControllerFactory controllerFactory, IBinderFactory binderFactory)
        {
            var parameters = methodInfo.GetParameters();
            var localVars = new List<ParameterExpression>();
            var typedVars = new Dictionary<int, ParameterExpression>();
            var paramVars = new List< ParameterExpression>();
            var codeExprs = new List<Expression>();
            foreach (ParameterInfo paramInfo in parameters) {
               // BuildAssign
            }

            var getControllerInstance = Expression.Call(Expression.Constant(controllerFactory), GetOrCreateFactoryMethodInfo);
            var callAction = Expression.Call(getControllerInstance, methodInfo, paramVars);

            var labelTarget = Expression.Label(typeof(object));
            var returnValueExpr = Expression.Convert(callAction, typeof(object));
            var retExpr = Expression.Return(labelTarget, returnValueExpr);
            var labelExpr = Expression.Label(labelTarget, Expression.Constant(null,typeof(object)));
            codeExprs.Add(retExpr);
            codeExprs.Add(labelExpr);

            Expression block = Expression.Block(localVars,codeExprs);
            if (block.CanReduce)
            {
                block = block.ReduceAndCheck();
            }
            var lamda = Expression.Lambda<Func<IRequest, IArguments, Context,object>>(block);

            var result = lamda.Compile();
            return result;
        }
Пример #2
0
        public PhysicalFilesParser CreateTestPhysicalFilesParser()
        {
            var ctd = new CoreTestData();
            var directoryMethods = ctd.CreateTestDirectoryMethods();
            var hasher           = ctd.CreateTestHasher();

            var            cdiProvider   = ctd.CreateTestCurrentDatabaseInfoProvider();
            IBinderFactory binderFactory = Substitute.For <IBinderFactory>();

            return(new PhysicalFilesParser(directoryMethods, hasher, cdiProvider, binderFactory));
        }
Пример #3
0
 public PhysicalFilesParser(
     IDirectoryMethods directoryMethods,
     IHasher hasher,
     IActiveRackService activeRackService,
     IBinderFactory binderFactory
     )
 {
     _directoryMethods  = directoryMethods;
     _hasher            = hasher;
     _activeRackService = activeRackService;
     _binderFactory     = binderFactory;
 }
        public ConstantTypeOptimisingVelocityExpressionFactory(IBinderFactory binderFactory, IImmutableDictionary <string, object> globals)
            : base(binderFactory)
        {
            var nullGlobals = globals?.Where(x => x.Value == null);

            if (nullGlobals?.Any() ?? false)
            {
                throw new ArgumentOutOfRangeException(nameof(globals), $"The following global variables must not be null: {String.Join(", ", nullGlobals.Select(x => x.Key))}");
            }

            _globals = globals;
        }
Пример #5
0
 internal BindingService(BindingServiceOptions bindingServiceOptions, IBinderFactory binderFactory)
 {
     _bindingServiceOptions = bindingServiceOptions;
     _binderFactory         = binderFactory;
 }
Пример #6
0
 public BindingService(IOptionsMonitor <BindingServiceOptions> optionsMonitor, IBinderFactory binderFactory)
 {
     _optionsMonitor = optionsMonitor;
     _binderFactory  = binderFactory;
 }
Пример #7
0
 public ReusableBinderFactory(IBinderFactory factory)
 {
     _rawBinderFactory = factory;
 }
Пример #8
0
 public TcpServer(ILogger logger, IBinderFactory binderFactory)
 {
     _logger = logger;
     _binderFactory = binderFactory;
     _binders = new List<IBinder>();
 }
Пример #9
0
 internal BindingService(BindingServiceOptions bindingServiceOptions, IBinderFactory binderFactory, ILogger <BindingService> logger = null)
 {
     _bindingServiceOptions = bindingServiceOptions;
     _binderFactory         = binderFactory;
     _logger = logger;
 }
Пример #10
0
 public BindingService(IOptionsMonitor <BindingServiceOptions> optionsMonitor, IBinderFactory binderFactory, ILogger <BindingService> logger = null)
 {
     _optionsMonitor = optionsMonitor;
     _binderFactory  = binderFactory;
     _logger         = logger;
 }
 public SomeLifecycle(IBinderFactory factory, IProcessor procesor)
 {
     Factory   = factory;
     Processor = procesor;
 }
Пример #12
0
 public SetDirective(Expression left, Expression right, SourceInfo sourceInfo, IBinderFactory binderFactory)
     : base(left, right, sourceInfo)
 {
     _binderFactory = binderFactory;
 }
Пример #13
0
 public TcpServer(ILogger logger, IBinderFactory binderFactory)
 {
     _logger        = logger;
     _binderFactory = binderFactory;
     _binders       = new List <IBinder>();
 }
Пример #14
0
 /// <summary>
 /// Создаёт новый контейнер внедрения зависимостей c указанной в <paramref name="binderFactory"/> фабрикой объектов связывания
 /// </summary>
 /// <param name="binderFactory"/>
 public BaseContainer([DisallowNull] IBinderFactory?binderFactory = null)
 {
     BinderFactory = binderFactory ?? new DefaultBinderFactory(this);
     InitContainer();
 }
 public VelocityExpressionFactory(IBinderFactory binderFactory)
 {
     _binderFactory = binderFactory;
 }