Имеет смысл. Если бы я столкнулся с этой проблемой, я бы подумал об использовании единого окончательного описания типа данных или класса, а затем о создании кода из этого описания.
Описание может быть исходным файлом javascript; Вы можете создать парсер, который генерирует соответствующий код C # из этого JS. Или это может быть исходный файл C #, и вы делаете обратное.
Вы можете найти больше полезности в описании этого в RelaxNG, а затем в создании (или поиске) генератора для C # и Javascript. В этом случае схема RelaxNG будет проверена в управлении исходным кодом, а сгенерированные артефакты - нет.
EDIT : Также есть зарождающаяся спецификация под названием WADL , которая, я думаю, также поможет в этом отношении. Я не оценивал WADL. Периферически, я знаю, что это не захватило мир штормом, но я не знаю, почему это так. Есть вопрос по SO относительно этого .
РЕДАКТИРОВАТЬ 2: Учитывая отсутствие инструментов (WADL, очевидно, мертворожденный), на вашем месте, я мог бы попробовать этот тактический подход:
- Используйте атрибуты
[DataContract]
в ваших типах c # и рассматривайте их как окончательные.
- создайте инструмент, который выкидывает ваш тип C # из скомпилированной сборки и создает экземпляр этого типа с помощью JsonSerializer в образце XML-документа JSON, который обеспечивает своего рода де-факто «определение объектной модели». Инструмент должен каким-то образом проверить, что созданный экземпляр типа может возвращаться в эквивалентный JSON, возможно, с контрольной суммой или CRC в полученном материале.
- запустить этот инструмент как часть процесса сборки.
Чтобы это произошло, вам нужно включить этот «образец JSON-документа» в исходный код, а также убедиться, что , что - это форма, которую вы использовали в различных JS. код в вашем приложении. Поскольку Javascript является динамическим, вам также может понадобиться верификатор типа или что-то еще, что будет выполняться как часть jslint или какого-либо другого шага проверки во время сборки, который проверит ваш источник Javascript, чтобы увидеть, что он использует ваши «стандартные» определения модели объекта. ,