JsonWriter - абстрактный базовый класс. Определение переменной этого типа аналогично использованию интерфейса; абстрактный класс и интерфейс предоставляют абстрактный контракт, который определяет минимально необходимые члены классов, которые их реализуют.
не должен ли это быть JsonTextWriter writer = new JsonTextWriter (sw) для
Консистенция
Определяя переменную writer
как JsonWriter, кодер сигнализирует, что они не собираются использовать какие-либо элементы, уникальные для реализации (JsonTextWriter). Они только намерены использовать участников, которые принадлежат договору. Это означает, что любой код, который вызывает членов в этом writer
(без приведения), будет скомпилирован и должен продолжать работать, если вы хотите изменить реализацию на какой-то другой класс, производный от JsonWriter.