У меня есть приложение, которое имеет часть на стороне сервера и часть на стороне клиента. Серверная часть реализована с помощью WebApi2 и EF6 и использует Json И Protobuf в качестве сериализаторов. Вот почему я использую [DataMember] в качестве атрибута в свойствах моих моделей. Здесь мне нужно установить порядок в атрибуте [DataMember (Order = number)] из-за сериализатора Protobuf.
Из моих серверных моделей (codefirst) я создаю файл edmx, который содержит информацию о моделях. На стороне клиента я генерирую эти модели с помощью шаблона t4, который использует файл edmx. Перед тем, как использовать Protobuf, я просто поместил атрибут DataMember поверх каждого свойства в шаблоне t4, который работал нормально. Но теперь я должен использовать тот же порядок, что и на сервере, чтобы он по-прежнему работал с Protobuf. Это означает, что мне нужно прочитать атрибут DataMember в edmx и найти значение Order. Но я просто не могу прочитать атрибут.
Я пытался прочитать
edmProperty.TypeUsage.Facets
и некоторые другие свойства этого объекта. Я также искал в Google и просмотрел несколько примеров проектов по шаблонам t4. Но не повезло.
Итак, как я могу прочитать порядок атрибута?
MyServerModel
{
[DataMember(Order=1)] //this number of the order is what I'm looking for
MyProperty{get;set;}
}
Теперь используйте магию T4 и сгенерируйте подписчиков с помощью файла edmx.
MyClientModel
{
[DataMember(Order=1)] //I want to generate this Attribute with the t4 template from
//the edmx file
MyProperty{get;set;}
}