Pergunta

Como você organiza seus métodos de extensão? Diga se eu tinha extensões para a classe de classe de objeto e corda Estou tentado a separar estes métodos de extensão em classes IE:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

estou fazendo isso muito complicado ou isso faz sentido?

Foi útil?

Solução

I organizar os métodos de extensão usando uma combinação de namespace eo nome da classe, e é semelhante à maneira como você descreve na pergunta.

Geralmente eu ter algum tipo de "assembléia primária" na minha solução que fornece a maior parte da funcionalidade compartilhada (como métodos de extensão). Vamos chamar essa assembléia "Framework" para fins de discussão.

Dentro do quadro de montagem, eu tento imitar os namespaces das coisas para as quais eu tenho métodos de extensão. Por exemplo, se eu estou estendendo System.Web.HttpApplication, eu teria um namespace "Framework.Web". Classes como "String" e "Object," estar no namespace "System", traduzir para a raiz "Framework" namespace em que a montagem.

Finalmente, nomenclatura segue as linhas que você especificou na questão - o nome do tipo com "Extensões" como um sufixo. Isso resulta uma hierarquia de classes como este:

  • Quadro (namespace)
    • Framework.ObjectExtensions (classe)
    • Framework.StringExtensions (classe)
    • Framework.Web (namespace)
      • Framework.Web.HttpApplicationExtensions (classe)

A vantagem é que, de uma perspectiva de manutenção, é muito fácil depois de ir encontrar os métodos de extensão para um determinado tipo.

Outras dicas

Há duas maneiras que eu organizar os métodos de extensão que eu uso,

1) Se a extensão é específico para o projeto que eu estou trabalhando, então eu mantê-lo no mesmo projeto / montagem, mas em seu próprio namespace.

2) Se a extensão é de um tipo para que eu possa ou usá-lo em outros projetos também, então eu separá-los em um comum conjunto de extensões.

A coisa mais importante a ter em mente é, qual é o alcance que eu vou estar usando isso em? Organizá-los não é difícil se eu apenas manter isso em mente.

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