Как вы понимаете, вы реализуете предложенное универсальное расширение для техники доктора WPF, описанной в его статье. Это расширение было предоставлено в комментарии к статье AlanO. Поскольку AlanO пытался вставить код непосредственно в комментарий, все символы «больше» и «меньше» были «съедены», что сделало его код не компилируемым.
Так, например, комментатор вставил этот код в комментарий:
public abstract class ConverterMarkupExtension<T>: MarkupExtension, IValueConverter
и это то, что было сделано через фильтр комментариев:
public abstract class ConverterMarkupExtension: MarkupExtension, IValueConverter
В результате вам нужно восстановить поврежденный код, чтобы он снова заработал. Если вам не нравятся дженерики, то, что нужно починить, может быть не сразу очевидно!
Полагаю, следующая вещь, которую нужно починить, это:
public class BytesToKBValueConverter : ConverterMarkupExtension
, который должен быть:
public class BytesToKBValueConverter : ConverterMarkupExtension<BytesToKBValueConverter>
Если это ваше первое знакомство с дженериками, этот стиль на необычной стороне!
В результате код является преобразователем значений и одновременно расширением разметки, и преобразователь разметки просто возвращает другой экземпляр самого себя (который является преобразователем значения). Тем не менее, это является духом оригинальной статьи, но я считаю, что оригинальный неуниверсальный подход Dr. WPF достаточно сложен без введения обобщений, которые просто усложняют чтение кода без реальной экономии большого количества шаблонов. Вам решать, какой подход лучше соответствует вашим потребностям.