Я нахожусь в процессе разработки библиотеки, которая будет использоваться в нескольких выпусках продукта, и часть ее работы заключается в расширении некоторых функций, которых нет в .NET 1.1, поскольку мы требуется использовать его. Вероятно, лучшим примером этого является метод String.IsNullOrEmpty, функциональность которого мы полагаемся довольно сильно.
Класс String в .NET запечатан; Я думал об использовании шаблонов Adapter или Decorator для расширения функциональных возможностей класса путем переноса исходной строки, но я не уверен, что это очень интуитивный подход к тому, что я пытаюсь сделать. Я также посмотрел на другой пост в StackOverflow о похожем вопросе, но он снова поднимает проблему, которую я только что упомянул.
Я определенно мог бы использовать Adapter для создания нужной мне функциональности, но я не могу представить, что могу сделать это для каждой строки:
bool isEmpty = new StringExtensionAdapter(myXmlNode.SelectSingleNode(myXpathString)).IsNullOrEmpty();
if (isEmpty)
{
// Do something
}
Мне не обязательно не нравится этот подход, но кажется, что он приводит к большому управлению памятью, где может быть лучше другое решение. Кроме того, я не в восторге от создания библиотеки «StringUtility», поскольку этот подход уводит меня еще дальше от объектно-ориентированного дизайна, которому я бы хотел следовать.
Любой вклад будет полезен; если я просто сумасшедший и должен использовать один из этих подходов, дайте мне знать. Я ищу больше лучших практик, чем решений, поскольку у меня их несколько.