Я хотел бы переопределить методы Serialize класса ASP.NET JavaScriptSerializer. Ничего особенного, я просто хочу сделать дополнительную пост-обработку для сериализованной строки, возвращаемой из .NET.расширение класса, который не реализует интерфейс
К сожалению, ни один из методов этого класса не объявлен виртуальным, а сам класс не является результатом интерфейса или абстрактного класса (кажется, это странный недосмотр, учитывая, что многие из основных классов .NET Framework предназначены для расширяемости) ,
Основываясь на некотором чтении, которое я сделал по этому вопросу, похоже, что у меня есть несколько вариантов на выбор.
Создать метод расширения. Я не являюсь большим поклонником этой опции, так как она включает в себя создание нового метода (компилятор не позволит использовать одно и то же имя/подпись дважды), о котором должны знать пользователи класса.
Вывести новый класс из JavaScriptSerializer, который имеет ту же подпись. Поскольку JavaScriptSerializer не имеет виртуальных методов, я бы использовал «новое» ключевое слово в каждом объявлении метода/свойства, чтобы выполнить скрытие метода. I думаю этот вариант считается декоратором?
Создайте новый интерфейс под названием IJavaScriptSerializer, который будет иметь ту же подпись, что и JavaScriptSerializer. Удалите все ссылки в моем коде JavaScriptSerializer и замените ссылки на вновь созданный интерфейс.
Мне бы хотелось услышать о дополнительных подходах и плюсах/минусах каждого подхода.
Спасибо, что нашли время для чтения.
Это мой 400-й ответ! – SLaks
И теперь у вас более 9000 ответов! :) 10 555, если быть точным. Спасибо, что так много помогли! –