protected void given_operation <T>(Expression <Func <T, object> > method) where T : new()
        {
            var visitor = new HandlerMethodVisitor();

            visitor.Visit(method);
            var mi = visitor.Method;

            Operation = new MethodBasedOperationCreator()
                        .CreateOperation(TypeSystems.Default.From(mi));
        }
        protected void given_operation <T>(Expression <Func <T, object> > method,
                                           IDependencyResolver resolver = null) where T : new()
        {
            var mi = HandlerMethodVisitor.FindMethodInfo(method);

            Operation = new MethodBasedOperationCreator(
                resolver: resolver,
                syncInterceptorProvider:
                resolver == null
            ? null
            : new SystemAndAttributesOperationInterceptorProvider(resolver))
                        .CreateOperation(TypeSystems.Default.From(mi));
        }
Ejemplo n.º 3
0
        protected void given_operation(string name, params Type[] parameters)
        {
            var method = (from m in Handler.GetMethods()
                          where m.InputMembers.Count() == parameters.Length && m.Name.EqualsOrdinalIgnoreCase(name)
                          let matchingParams =
                              (from parameter in m.InputMembers
                               from typeParameter in parameters
                               where parameter.Type.CompareTo(parameter.TypeSystem.FromClr(typeParameter)) == 0
                               select parameter).Count()
                              where parameters.Length == 0 || matchingParams == parameters.Length
                              select m).First();

            if (method.Owner != Handler)
            {
                throw new InvalidOperationException();
            }
            Operation = MethodBasedOperationCreator.CreateOperationDescriptor(method).Create();
        }
        void CreateOperationsForModel(ResourceModel resourceModel)
        {
            var operations = MethodBasedOperationCreator.CreateOperationDescriptors(
                resourceModel.Handlers.Select(h => h.Type),
                _asyncInterceptors,
                FilterMethods,
                _syncInterceptors,
                _binderLocator,
                _resolver).ToList();

            foreach (var uri in resourceModel.Uris)
            {
                foreach (var operation in operations)
                {
                    uri.Operations.Add(ToOperationModel(operation));
                }
            }
        }
        public with_per_request_dependency()
        {
            Resolver = new InternalDependencyResolver()
                       .Singleton <IContextStore, InMemoryContextStore>();

            Resolver.AddDependency <IOperationInterceptor, SystemAttribute>(DependencyLifetime.PerRequest);

            var mi = HandlerMethodVisitor.FindMethodInfo <Handler>(h => h.Get());

            var creator = new MethodBasedOperationCreator(
                resolver: Resolver,
                syncInterceptorProvider:
                new SystemAndAttributesOperationInterceptorProvider(Resolver.Resolve <IEnumerable <IOperationInterceptor> >));

            Resolver.AddDependency <IMyService, Service>(DependencyLifetime.PerRequest);

            var value = creator
                        .CreateOperation(TypeSystems.Default.FromClr <Handler>(), TypeSystems.Default.From(mi))
                        .InvokeAsync()
                        .Result.ToList();
        }
Ejemplo n.º 6
0
        protected void given_operation <T>(Expression <Func <T, object> > method,
                                           IDependencyResolver resolver = null) where T : new()
        {
            var mi       = HandlerMethodVisitor.FindMethodInfo(method);
            var provider = resolver == null
        ? null
        : new SystemAndAttributesOperationInterceptorProvider(resolver.Resolve <IEnumerable <IOperationInterceptor> >);
            Func <IOperation, IEnumerable <IOperationInterceptor> > syncInterceptorProvider = null;

            if (provider != null)
            {
                syncInterceptorProvider = provider.GetInterceptors;
            }
            var asyncInterceptors = resolver == null
        ? Enumerable.Empty <IOperationInterceptorAsync>()
        : resolver.Resolve <IEnumerable <IOperationInterceptorAsync> >();

            Operation = MethodBasedOperationCreator
                        .CreateOperationDescriptor(
                TypeSystems.Default.From(mi),
                () => asyncInterceptors,
                syncInterceptorProvider, binderLocator: null, resolver: resolver).Create();
        }