Здравствуйте, ionoy, Вы писали:
I>Оно прибито к конкретным фреймворкам, так как нужно знать основные типы вроде DependencyObject. С другой стороны, добавить поддержку новой платформы совсем не сложно. Вот, например, как была добавлена поддержка Авалонии: https://github.com/AmmyUI/AmmyUI/blob/master/src/Core/Ammy.Platforms/AvaloniaPlatform.cs
Если я сунусь в AmmyUI со своим CsConsoleFormat, про который никто не слышал, велик шанс, что меня не поймут.
Из AmmyUI вычленяется что-нибудь вроде System.Xaml/Newtonsoft.Json, чтобы можно было прикрутить к своей библиотеке пакет для поддержки синтаксиса? (Впрочем System.Xaml/Portable.Xaml здесь не самый лучший пример пример, так как требует добавления зависимости в основную библиотеку из-за атрибутов.)
I>bind есть, как и все остальные встроенные синтаксические расширения. Для bind даже есть свой синтаксис, который позволяет определять конвертер по месту.
Binding — это часть PresentationFramework, а не System.Xaml, и в других фреймворках, полагаю, он тоже свой. Так что если это работает универсально, как вы описали, то я не понял, как это сделано.
И чтобы два раза не вставать, хотелось бы понять ситуацию с Nitra. Полагаю, вы должны быть в курсе.
Если написать свой велосипедный синтаксис, просто упрощающий XAML до Ammy-подобного вида, но без разбора C# и прочих премудростей, и с трансформацией сразу в объекты, минуя промежуточный XAML (в идеале, наверное, генерировать код C# а-ля .designer.cs из WinForms...), то:
1. Что я при этом теряю? (Я так понимаю, мне не светит автодополнение кода по элементам из той же сборки. Code-behind у меня и так нет, это не проблема.)
2. Будет ли моя библиотека Alba.CsConsoleFormat.CoolSyntaxSupport заставлять конечное приложение тащить с собой какие-нибудь дополнительные зависимости?
3. Что мне придётся писать ручками? (Я так понимаю, надо будет прикручиваться к системе сборки и допиливать автодополнение кода.)
В общем, хотелось бы понять перспективность простого ограниченного решения — формата сериализации специально для моей библиотеки. У меня только элементы, одноразовые биндинги, ресурсы в корне и односторонние конвертеры, всё минималистично.