10
votes

La méthode d'extension appelle une autre classe d'extension - bonne conception?

Je me demande si c'est un bon design si une méthode d'extension utilise un autre dans la même classe d'extension.

public class ClassExtensions
{
   public static bool IsNotNull<T>(this T source)
      where T : class
   {
      return !source.IsNull();
   }

   public static bool IsNull<T>(this T source)
      where T : class
   {
      return source == null;
   }
}


1 commentaires

Vous n'introduisez aucune nouvelle dépendance externe ou quoi que ce soit. Si vous supprimez une méthode avec des dépendances, elle ne construira pas. Pas de véritable descente à cela.


4 Réponses :


2
votes

IMHO, il s'agit généralement, car il réduit la quantité de code que vous devez écrire et donc la possibilité de faire des erreurs.

Dans l'exemple ci-dessus, cependant, je pense qu'il est surchargé en raison de la simplicité de la méthode.


1 commentaires

Je suis d'accord. Pourrait aussi bien appeler! Isnull () Pour vérifier ISnotnull ().



0
votes

Bien sûr, c'est un bon design et peut être appelé sec .

Ceci, cependant, est un exemple très trivial.


0 commentaires

1
votes

Oui, c'est une bonne pratique. Considérez la classe comme une sorte de type d'espace de noms et de groupes associés les extensions ensemble.


0 commentaires

11
votes

C'est bien. Votre exemple est un peu trivial, bien sûr, mais considérez d'autres situations dans lesquelles une méthode pourrait fournir des surcharges (à l'aide de String.Substring sous forme d'exemple ... une méthode prétendue n'existe pas déjà).

public static class Foo
{
    public static string Substring(this string input, int startingIndex)
    {
         return Foo.Substring(input, startingIndex, input.Length - startingIndex);
         // or return input.Substring(startingIndex, input.Length - startingIndex);
    }

    public static string Substring(this string input, int startingIndex, int length)
    {
         // implementation 
    }
}


0 commentaires