Pergunta

A minha pergunta não é tanto sobre o uso de interfaces, mas mais de uma organização do projeto natureza.

Nota:. Eu estou usando VisualStudio em uma aplicação multi-camadas

deve meus arquivos de interface viver em um projeto separado de suas implementações? Meu pensamento inicial é que seria útil para separar todos os meus interfaces de serviço em seu próprio projeto (e um projeto para minha inicial implementações) para que no caminho do projeto de implementação / concreto pode ser removido e substituído por um novo se necessário.

Para esclarecer com um exemplo: Suponha que eu tenho uma camada de negócios interface chamada IBusinessService que vive no namespace MyApp.Business.Services. Minha implementação FooBusinessService existiria no mesmo namespace, mas um projeto diferente no VisualStudio. Se, mais tarde, a implementação precisa ser reformulado, um desenvolvedor poderia remover a referência para o FooService.proj e substituí-lo com uma referência a BarService.proj.

Isto parece que seria declutter a solução aplicativo, permitindo-lhe para fazer referência a um projeto com apenas interfaces sem também adquirir implementações concretas (que pode ser obsoletos ou de nenhuma utilidade para você), mas estou faltando alguma coisa?

Foi útil?

Solução

Eu estou com você. Eu prefiro colocar meus interfaces de em um projeto separado e em um espaço diferente. O exemplo clássico é com as classes de acesso a dados. Você quer ser capaz de codificar uma versão MSSQL e uma versão de MySQL, tanto implementar a mesma interface. Como tal, prefere-se que a definição de interface de estar em uma montagem / projecto separado. Aqui está um exemplo de como eu colocar para fora os conjuntos e espaços de nomes:

  • Elder.DataAccess.Core - contém as interfaces e utilitários comuns
  • Elder.DataAccess.MSSQL - implementações MSSQL específicas das interfaces
  • Elder.DataAccess.MySQL - implementações do MySQL específicas das interfaces

Isso me permite modificar as implementações sem tocar o projeto que contém as definições de interface. Isso me ajuda com controle de versão e rastreamento de alterações também. Pode haver outras maneiras de pele deste gato, então eu vou estar ansioso para ver as respostas dos outros povos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top