Ich bin dabei, eine Bibliothek zu erstellen, die in mehreren Releases eines Produkts verwendet wird, und ein Teil ihrer Aufgabe besteht darin, einige der Funktionen zu erweitern, die in .NET 1.1 nicht existieren, da wir dazu benötigt werden um es zu benutzen. Das wahrscheinlich beste Beispiel dafür ist die String.IsNullOrEmpty-Methode, auf deren Funktionalität wir uns ziemlich verlassen.Was ist ein sauberer/intuitiver Ansatz zum Erweitern einer versiegelten Klasse in .NET 1.1?
Die String-Klasse in .NET ist versiegelt; Ich habe darüber nachgedacht, entweder das Adapter- oder das Decorator-Muster zu verwenden, um die Funktionalität der Klasse durch das Umschließen der ursprünglichen Zeichenfolge zu erweitern, aber ich bin nicht überzeugt, dass dies ein sehr intuitiver Ansatz für das ist, was ich versuche. Ich habe auch über eine ähnliche Frage another post on StackOverflow betrachtet, aber es wirft erneut das Problem auf, das ich gerade erwähnte.
Ich konnte definitiv Adapter verwenden, um die Funktionalität Ich suche zu schaffen, aber ich kann tun dies für jede Saite nicht vorstellen:
bool isEmpty = new StringExtensionAdapter(myXmlNode.SelectSingleNode(myXpathString)).IsNullOrEmpty();
if (isEmpty)
{
// Do something
}
ich nicht unbedingt diesen Ansatz nicht mögen, aber es scheint, Wie es in viel Speicherverwaltung resultiert, wo eine andere Lösung besser sein könnte. Ich bin auch nicht scharf darauf, eine "StringUtility" -Bibliothek zu erstellen, da diese Vorgehensweise mich vom objektorientierten Design, dem ich folgen möchte, entfernt.
Jede Eingabe wäre hilfreich; Wenn ich nur verrückt bin und einen dieser Ansätze verwenden sollte, lass es mich wissen. Ich suche mehr nach Best Practices als nach einer Lösung, da ich mehrere habe.
Ich wollte nur die Adapter-Muster empfehlen und eine kleine Probe zu schreiben, aber ... es scheint, dass Sie bereits erwähnt :( –
Ich hasse versiegelte Klassen, besonders versiegelte Klassen, die nicht serialisierbar sind.Seit 1.1 wollte ich SqlDataAdapter erweitern, um eine eingeschränkte Serialisierung zu ermöglichen, also konnte ich Details über Parameter und dergleichen in einer netten Konfigurationsdatei anstatt eines Stapels hässlichen maschinengenerierten Codes haben . – quillbreaker