Organisieren von Erweiterungsmethoden

Wie organisieren Sie Ihre Erweiterungsmethoden? Angenommen, ich hätte Erweiterungen für die Objektklasse und die String-Klasse. Ich bin versucht, diese Erweiterungsmethoden in die IE-Klassen zu trennen:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

mache ich das zu kompliziert oder macht das Sinn?

0

2 Antworten

Es gibt zwei Möglichkeiten, wie ich die Erweiterungsmethoden, die ich verwende, organisiere,

1) Wenn die Erweiterung spezifisch für das Projekt ist, an dem ich arbeite, dann behalte ich es im selben Projekt/Assembly, aber in einem eigenen Namensraum.

2) Wenn die Erweiterung so beschaffen ist, dass ich sie auch in anderen Projekten verwenden kann oder will, dann teile ich sie in einer gemeinsamen Erweiterung zusammen.

Das Wichtigste, was zu beachten ist, in welchem ​​Umfang werde ich diese verwenden? Es ist nicht schwer, sie zu organisieren, wenn ich das bedenke.

0
hinzugefügt

Ich organisiere Erweiterungsmethoden mit einer Kombination aus Namespace und Klassennamen und ähnelt der Beschreibung in der Frage.

Im Allgemeinen habe ich eine Art "primäre Assembly" in meiner Lösung, die den Großteil der gemeinsamen Funktionalität bereitstellt (wie Erweiterungsmethoden). Wir werden diese Versammlung "Framework" zur Diskussion nennen.

Innerhalb der Framework-Assembly versuche ich, die Namespaces der Dinge nachzuahmen, für die ich Erweiterungsmethoden habe. Zum Beispiel, wenn ich System.Web.HttpApplication erweitern würde, hätte ich einen Namespace "Framework.Web". Klassen wie "String" und "Object", die sich im Namespace "System" befinden, werden in den Namespace "Framework" in dieser Assembly übersetzt.

Schließlich folgt die Benennung den Zeilen, die Sie in der Frage angegeben haben - der Typname mit "Erweiterungen" als Suffix. Dies ergibt eine Klassenhierarchie wie folgt:

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

Der Vorteil ist, dass es aus Sicht der Wartung später sehr einfach ist, die Erweiterungsmethoden für einen bestimmten Typ zu finden.

0
hinzugefügt
Wow, gut, dass ich auf diese Antwort stieß, bevor ich meine erste Erweiterungsklasse erstellte.
hinzugefügt der Autor Sung, Quelle