public void Process(Type type, Registry registry)
        {
            if (type.ImplementsInterfaceTemplate(typeof(IQueryHandler<,>)))
            {
                MvcQueryRegistrar.BuildQueryRegistrarForHandler(type).RegisterQuery(registry);
            }

            if (type.ImplementsInterfaceTemplate(typeof(ICommandHandler<>)))
            {
                MvcCommandRegistrar.BuildCommandRegistrarForHandler(type).RegisterCommand(registry);
            }
        }
 private static void RegisterQueryForDefaultCrudCommands(Type type, Type genericCommand, Registry registry)
 {
     if (type.ImplementsInterfaceTemplate(genericCommand))
     {
         MvcQueryRegistrar.BuildQueryRegistrarForCrudCommand(type, genericCommand).RegisterQuery(registry);
     }
 }
        public bool MatchesType(Type type)
        {
            if (typeof(IHandler).IsAssignableFrom(type)) return false;

            return
                type.ImplementsInterfaceTemplate(typeof(IListener<>));
        }
        private static void RegisterTypes(Type type, Registry registry, Type genericCommand, Type handler, Type handlerInterface)
        {
            if (type.ImplementsInterfaceTemplate(genericCommand))
            {
                Type interfaceType = type.FindFirstInterfaceThatCloses(genericCommand);
                Type domainEntityType = interfaceType.GetGenericArguments()[0];

                Type closesCommandHandlerInterface = handlerInterface.MakeGenericType(type, domainEntityType);
                Type closesCommandHandler = handler.MakeGenericType(type, domainEntityType);

                registry.For(closesCommandHandlerInterface)
                    .Add(closesCommandHandler);
            }
        }
        public void Process(Type type, Registry registry)
        {
            if (type.ImplementsInterfaceTemplate(typeof(ICreateCommand<>)))
            {
                Type interfaceType = type.FindFirstInterfaceThatCloses(typeof(ICreateCommand<>));
                Type domainEntityType = interfaceType.GetGenericArguments()[0];

                var openIdGeneratorType = typeof(IIdGenerator<,>);
                var closedIdGeneratorType =
                    openIdGeneratorType.MakeGenericType(domainEntityType, typeof(Guid?));

                var openGuidGenerator = typeof(GuidIdGenerator<>);
                var closedGuidIdGenerator = openGuidGenerator.MakeGenericType(domainEntityType);

                registry.For(closedIdGeneratorType).Use(closedGuidIdGenerator);
            }
        }
        public void ProcessHandler(Type type, Registry registry, Type typeInterface, Type handlerInterface, Type concreteHandler)
        {
            if (type.ImplementsInterfaceTemplate(typeInterface))
            {
                Type interfaceType = type.FindFirstInterfaceThatCloses(typeInterface);
                Type[] genericArguments = interfaceType.GetGenericArguments();

                Type closeActionProcessprInterface =
                    handlerInterface.MakeGenericType(genericArguments);

                Type closesActionProcessor =
                    concreteHandler.MakeGenericType(genericArguments);

                registry.For(closeActionProcessprInterface).Use(closesActionProcessor);
                registry.AddType(interfaceType, type);
            }
        }
Пример #7
0
        public void ProcessFacade(Type type, Registry registry, Type facadeInterface, Type genericFacadeInterface, Type concreteFacade)
        {
            if (type.ImplementsInterfaceTemplate(genericFacadeInterface))
            {
                var interfaceType = type.FindFirstInterfaceThatCloses(genericFacadeInterface);
                var commandMessageTypes = interfaceType.GetGenericArguments();

                var closesQuerryProcessor =
                    concreteFacade.MakeGenericType(commandMessageTypes);

                registry.AddType(closesQuerryProcessor);
                registry.AddType(interfaceType, type);
            }
            if (facadeInterface.IsAssignableFrom(type) && !type.IsInterface)
            {
                registry.AddType(facadeInterface, type);
            }
        }
        public void Process(Type type, Registry registry)
        {
            if (!type.ImplementsInterfaceTemplate(typeof (IFormHandler<>))) return;

            var interfaceType = type.FindFirstInterfaceThatCloses(typeof (IFormHandler<>));
            var commandMessageType = interfaceType.GetGenericArguments()[0];

            var openCommandMethodResultType = typeof (FormActionResult<>);
            var closedCommandMethodResultType = openCommandMethodResultType.MakeGenericType(commandMessageType);

            var openActionMethodInvokerType = typeof (IActionMethodResultInvoker<>);
            var closedActionMethodInvokerType =
                openActionMethodInvokerType.MakeGenericType(closedCommandMethodResultType);

            var openCommandMethodResultInvokerType = typeof (CommandMethodResultInvoker<>);
            var closedCommandMethodResultInvokerType =
                openCommandMethodResultInvokerType.MakeGenericType(commandMessageType);

            registry.For(closedActionMethodInvokerType).Use(closedCommandMethodResultInvokerType);
        }
 public bool MatchesType(Type type)
 {
     return type.ImplementsInterfaceTemplate(typeof (IHandle<>));
 }
 public bool MatchesType(Type type)
 {
     return type.ImplementsInterfaceTemplate(typeof(IListenTo<>.All)) ||
            type.ImplementsInterfaceTemplate(typeof(IListenTo<>.SentToMe)) ||
            type.ImplementsInterfaceTemplate(typeof(IListenTo<>.ThatSatisfy));
 }
 public bool MatchesType(Type type)
 {
     bool matchesType = type.ImplementsInterfaceTemplate(typeof(IEventHandler<>));
     return matchesType;
 }
 public bool MatchesType(Type type)
 {
     Console.WriteLine(type.ToString());
     return type.ImplementsInterfaceTemplate(typeof(IListener<>));
 }