Organizando Métodos de Extensão

Como você organiza seus métodos de extensão? Digamos que se eu tivesse extensões para a classe de objeto e classe de string, sou tentado a separar esses métodos de extensão em classes IE:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

estou fazendo isso muito complicado ou isso faz sentido?

0
adicionado
Visualizações: 1

2 Respostas

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

1) Se a extensão é específica para o projeto em que estou trabalhando, eu a mantenho no mesmo projeto/assembly, mas em seu próprio namespace.

2) Se a extensão é de um tipo para que eu possa ou esteja usando em outros projetos também, então eu os separo em uma montagem comum para extensões.

A coisa mais importante a ter em mente é: qual é o escopo no qual eu usarei isso? Organizá-los não é difícil se eu tiver isso em mente.

0
adicionado

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

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

Dentro do assembly Framework, eu tento imitar os namespaces das coisas para as quais 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", que estão no namespace "System", são convertidas para o namespace "Framework" raiz nesse assembly.

Por fim, a nomenclatura segue as linhas especificadas na pergunta - o nome do tipo com "Extensões" como um sufixo. Isso produz uma hierarquia de classes como esta:

  • Framework (namespace)
    • Framework.ObjectExtensions (class)
    • Framework.StringExtensions (class)
    • Framework.Web (namespace)
      • Framework.Web.HttpApplicationExtensions (class)

O benefício é que, do ponto de vista da manutenção, é muito fácil depois encontrar os métodos de extensão para um determinado tipo.

0
adicionado
Uau, é bom que eu tenha encontrado essa resposta antes de criar minha primeira aula de extensão.
adicionado o autor Sung, fonte