public void Process(Type type, Registry registry)
 {
     if (type.IsDefined(typeof (ServiceContractAttribute), false))
     {
         var closedGenericMethod = _method.MakeGenericMethod(type);
         var module = new WcfModule();
         registry.For(type).Use(x => closedGenericMethod.Invoke(module, new object[0]));
     }
 }
        public static void CreateKernelWcf(WcfModule kernel)
        {
            try
            {
                //Cliente
                kernel.Bind <IClienteAppService>().To <ClienteAppService>().InRequestScope();
                kernel.Bind <IClienteService>().To <ClienteService>().InRequestScope();
                kernel.Bind <IClienteRepository>().To <ClienteRepository>().InRequestScope();

                //ClienteContato
                kernel.Bind <IClienteContatoAppService>().To <ClienteContatoAppService>().InRequestScope();
                kernel.Bind <IClienteContatoService>().To <ClienteContatoService>().InRequestScope();
                kernel.Bind <IClienteContatoRepository>().To <ClienteContatoRepository>().InRequestScope();

                //Empresa
                kernel.Bind <IEmpresaAppService>().To <EmpresaAppService>().InRequestScope();
                kernel.Bind <IEmpresaService>().To <EmpresaService>().InRequestScope();
                kernel.Bind <IEmpresaRepository>().To <EmpresaRepository>().InRequestScope();

                //EmpresaCliente
                kernel.Bind <IEmpresaClienteAppService>().To <EmpresaClienteAppService>().InRequestScope();
                kernel.Bind <IEmpresaClienteService>().To <EmpresaClienteService>().InRequestScope();
                kernel.Bind <IEmpresaClienteRepository>().To <EmpresaClienteRepository>().InRequestScope();

                //EmpresaContato
                kernel.Bind <IEmpresaContatoAppService>().To <EmpresaContatoAppService>().InRequestScope();
                kernel.Bind <IEmpresaContatoService>().To <EmpresaContatoService>().InRequestScope();
                kernel.Bind <IEmpresaContatoRepository>().To <EmpresaContatoRepository>().InRequestScope();

                //EmpresaFornecedor
                kernel.Bind <IEmpresaFornecedorAppService>().To <EmpresaFornecedorAppService>().InRequestScope();
                kernel.Bind <IEmpresaFornecedorService>().To <EmpresaFornecedorService>().InRequestScope();
                kernel.Bind <IEmpresaFornecedorRepository>().To <EmpresaFornecedorRepository>().InRequestScope();

                //Fornecedor
                kernel.Bind <IFornecedorAppService>().To <FornecedorAppService>().InRequestScope();
                kernel.Bind <IFornecedorService>().To <FornecedorService>().InRequestScope();
                kernel.Bind <IFornecedorRepository>().To <FornecedorRepository>().InRequestScope();

                //FornecedorContato
                kernel.Bind <IFornecedorContatoAppService>().To <FornecedorContatoAppService>().InRequestScope();
                kernel.Bind <IFornecedorContatoService>().To <FornecedorContatoService>().InRequestScope();
                kernel.Bind <IFornecedorContatoRepository>().To <FornecedorContatoRepository>().InRequestScope();

                //Menu
                kernel.Bind <IMenuAppService>().To <MenuAppService>().InRequestScope();
                kernel.Bind <IMenuService>().To <MenuService>().InRequestScope();
                kernel.Bind <IMenuRepository>().To <MenuRepository>().InRequestScope();

                //MenuTipo
                kernel.Bind <IMenuTipoAppService>().To <MenuTipoAppService>().InRequestScope();
                kernel.Bind <IMenuTipoService>().To <MenuTipoService>().InRequestScope();
                kernel.Bind <IMenuTipoRepository>().To <MenuTipoRepository>().InRequestScope();

                //Produto
                kernel.Bind <IProdutoAppService>().To <ProdutoAppService>().InRequestScope();
                kernel.Bind <IProdutoService>().To <ProdutoService>().InRequestScope();
                kernel.Bind <IProdutoRepository>().To <ProdutoRepository>().InRequestScope();

                //ProdutoClienteSaida
                kernel.Bind <IProdutoClienteSaidaAppService>().To <ProdutoClienteSaidaAppService>().InRequestScope();
                kernel.Bind <IProdutoClienteSaidaService>().To <ProdutoClienteSaidaService>().InRequestScope();
                kernel.Bind <IProdutoClienteSaidaRepository>().To <ProdutoClienteSaidaRepository>().InRequestScope();

                //ProdutoEstoque
                kernel.Bind <IProdutoEstoqueAppService>().To <ProdutoEstoqueAppService>().InRequestScope();
                kernel.Bind <IProdutoEstoqueService>().To <ProdutoEstoqueService>().InRequestScope();
                kernel.Bind <IProdutoEstoqueRepository>().To <ProdutoEstoqueRepository>().InRequestScope();

                //ProdutoFormasDePagamento
                kernel.Bind <IProdutoFormasDePagamentoAppService>()
                .To <ProdutoFormasDePagamentoAppService>()
                .InRequestScope();
                kernel.Bind <IProdutoFormasDePagamentoService>().To <ProdutoFormasDePagamentoService>().InRequestScope();
                kernel.Bind <IProdutoFormasDePagamentoRepository>()
                .To <ProdutoFormasDePagamentoRepository>()
                .InRequestScope();

                //ProdutoFornecedorEntrada
                kernel.Bind <IProdutoFornecedorEntradaAppService>()
                .To <ProdutoFornecedorEntradaAppService>()
                .InRequestScope();
                kernel.Bind <IProdutoFornecedorEntradaService>().To <ProdutoFornecedorEntradaService>().InRequestScope();
                kernel.Bind <IProdutoFornecedorEntradaRepository>()
                .To <ProdutoFornecedorEntradaRepository>()
                .InRequestScope();

                //ProdutoTipo
                kernel.Bind <IProdutoTipoAppService>().To <ProdutoTipoAppService>().InRequestScope();
                kernel.Bind <IProdutoTipoService>().To <ProdutoTipoService>().InRequestScope();
                kernel.Bind <IProdutoTipoRepository>().To <ProdutoTipoRepository>().InRequestScope();


                //Usuario
                kernel.Bind <IUsuarioAppService>().To <UsuarioAppService>().InRequestScope();
                kernel.Bind <IUsuarioService>().To <UsuarioService>().InRequestScope();
                kernel.Bind <IUsuarioRepository>().To <UsuarioRepository>().InRequestScope();

                //UsuarioPerfil
                kernel.Bind <IUsuarioPerfilAppService>().To <UsuarioPerfilAppService>().InRequestScope();
                kernel.Bind <IUsuarioPerfilService>().To <UsuarioPerfilService>().InRequestScope();
                kernel.Bind <IUsuarioPerfilRepository>().To <UsuarioPerfilRepository>().InRequestScope();


                //UsuarioPerfilMenu
                kernel.Bind <IUsuarioPerfilMenuAppService>().To <UsuarioPerfilMenuAppService>().InRequestScope();
                kernel.Bind <IUsuarioPerfilMenuService>().To <UsuarioPerfilMenuService>().InRequestScope();
                kernel.Bind <IUsuarioPerfilMenuRepository>().To <UsuarioPerfilMenuRepository>().InRequestScope();


                //Servico
                kernel.Bind <IServicoAppService>().To <ServicoAppService>().InRequestScope();
                kernel.Bind <IServicoService>().To <ServicoService>().InRequestScope();
                kernel.Bind <IServicoRepository>().To <ServicoRepository>().InRequestScope();

                //ServicoUsuarioPerfil
                kernel.Bind <IServicoUsuarioPerfilAppService>().To <ServicoUsuarioPerfilAppService>().InRequestScope();
                kernel.Bind <IServicoUsuarioPerfilService>().To <ServicoUsuarioPerfilService>().InRequestScope();
                kernel.Bind <IServicoUsuarioPerfilRepository>().To <ServicoUsuarioPerfilRepository>().InRequestScope();

                //Email
                kernel.Bind <IEmailAppService>().To <EmailAppService>().InRequestScope();
                kernel.Bind <IEmailService>().To <EmailService>().InRequestScope();
                kernel.Bind <IEmailRepository>().To <EmailRepository>().InRequestScope();


                //ProdutoClienteSaidaItem
                kernel.Bind <IProdutoClienteSaidaItemAppService>().To <ProdutoClienteSaidaItemAppService>().InRequestScope();
                kernel.Bind <IProdutoClienteSaidaItemService>().To <ProdutoClienteSaidaItemService>().InRequestScope();
                kernel.Bind <IProdutoClienteSaidaItemRepository>().To <ProdutoClienteSaidaItemRepository>().InRequestScope();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }