Frage

Wie organisieren Sie Ihre Erweiterungsmethoden? Sprich, wenn ich Erweiterungen für die Objektklasse und String-Klasse hatte ich bin versucht, diese Erweiterungsmethoden in Klassen IE zu trennen:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

mache ich diese zu kompliziert oder ist das sinnvoll?

War es hilfreich?

Lösung

I Erweiterungsmethoden unter Verwendung einer Kombination von Namespace und Klassennamen organisieren, und es ist ähnlich wie Sie in der Frage beschreiben.

Im Allgemeinen habe ich eine Art von „primary assembly“ in meiner Lösung, die die Mehrheit der gemeinsam genutzten Funktionen (wie Erweiterungsmethoden) zur Verfügung stellt. Wir werden zum Zweck der Diskussion dieser Versammlung „Framework“ nennen.

Im Rahmen der Montage versuche ich die Namensräume der Dinge zu imitieren, für die ich Erweiterungsmethoden haben. wenn ich System.Web.HttpApplication Zum Beispiel bin erstreckt, würde ich einen „Framework.Web“ Namespace haben. Klassen wie „String“ und „Objekt“ im „System“ Namespace zu sein, übersetzen in der Wurzel „Framework“ Namespace in dieser Versammlung.

Schließlich geht Namensgebung entlang den Linien, die Sie in der Frage angegeben haben - die Typenbezeichnung mit „Extensions“ als Suffix. Dies ergibt eine Klassenhierarchie wie folgt aus:

  • Framework (Namespace)
    • Framework.ObjectExtensions (Klasse)
    • Framework.StringExtensions (Klasse)
    • Framework.Web (Namespace)
      • Framework.Web.HttpApplicationExtensions (Klasse)

Der Vorteil ist, dass aus einer Wartung Perspektive, es ist wirklich später einfach die Erweiterungsmethoden für einen bestimmten Typen gehen finden.

Andere Tipps

Es gibt zwei Möglichkeiten, dass ich die Erweiterungsmethoden organisieren, die ich verwende,

1) Wenn die Erweiterung für das Projekt spezifisch ist, arbeite ich an, dann halte ich es im selben Projekt / Montage, sondern in einem eigenen Namensraum.

2) Wenn die Erweiterung einer Art ist, so dass ich oder ist es in anderen Projekten zu verwenden, dann trenne ich sie in einer gemeinsamen Baugruppe für Erweiterungen.

Das Wichtigste im Auge zu behalten ist, wie ist der Umfang, die ich diese in verwenden werden? sie organisieren, ist nicht schwer, wenn ich dies nur im Auge behalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top