Question

Comment organisez-vous vos méthodes d'extension? Dire si j'avais des extensions pour la classe d'objet et la classe de chaîne, je suis tenté de séparer ces méthodes d'extension en classes IE:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

est-ce que je fais cela trop compliqué ou est-ce que cela a un sens?

Était-ce utile?

La solution

J'organise les méthodes d'extension en utilisant une combinaison d'espace de nom et de nom de classe. Cette procédure est similaire à celle décrite dans la question.

En général, j'ai une sorte de "primaire" " dans ma solution qui fournit la majorité des fonctionnalités partagées (comme les méthodes d'extension). Nous appellerons cette assemblée " Framework " pour des raisons de discussion.

Dans l'assemblage Framework, j'essaie d'imiter les espaces de noms des objets pour lesquels j'ai des méthodes d'extension. Par exemple, si j'étends System.Web.HttpApplication, un "Framework.Web" sera créé. espace de noms. Des classes comme & String; String " et " Objet, " être dans le " Système " espace de noms, traduit à la racine " Framework " espace de noms dans cet assemblage.

Enfin, les noms suivent les lignes que vous avez spécifiées dans la question: le nom du type avec " Extensions " en suffixe. Cela donne une hiérarchie de classe comme celle-ci:

  • Framework (espace de noms)
    • Framework.ObjectExtensions (class)
    • Framework.StringExtensions (classe)
    • Framework.Web (espace de noms)
      • Framework.Web.HttpApplicationExtensions (class)

L’avantage, c’est que, du point de vue de la maintenance, il est très facile de rechercher ultérieurement les méthodes d’extension pour un type donné.

Autres conseils

Il existe deux méthodes pour organiser les méthodes d'extension que j'utilise,

1) Si l'extension est spécifique au projet sur lequel je travaille, je la conserve dans le même projet / assemblage, mais dans son propre espace de noms.

2) Si l'extension est de nature à ce que je puisse ou l'utilise également dans d'autres projets, je les sépare dans un assemblage commun pour les extensions.

La chose la plus importante à garder à l’esprit est la suivante: dans quel cadre vais-je les utiliser? Les organiser n'est pas difficile si je garde cela à l'esprit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top