Автоматическая маркировка классов C # для сериализации - PullRequest
0 голосов
/ 04 мая 2011

Я хочу создать визуальный студийный плагин, который автоматически аннотирует классы для сериализации.Например, для встроенного двоичного сериализатора я мог бы просто добавить [Serializable] к объявлению класса, для WCF он мог бы добавить [DataContract] к классу и [DataMember] к членам и свойствам (я мог бы получить [KnownType] информацию через отражениеи комментируйте, где это уместно).При использовании буферов протокола можно добавить атрибуты [ProtoContract], [ProtoMember] и [ProtoInclude] и так далее.Я предполагаю, что классы, на которых мы собираемся использовать это, безопасны для сериализации (поэтому там нет сокетов или несериализуемых вещей).Я хочу знать, что является более простым способом взять существующий кусок кода (или двоичный файл, если это проще) и добавить эти атрибуты, сохраняя при этом остальную часть кода без изменений.Я в порядке с выводом, являющимся исходным кодом или бинарным.

Мне приходит в голову идея использовать синтаксический анализатор C #, анализировать все, находить интересные элементы кода, комментировать их и записывать код обратно.Однако это кажется очень сложным, учитывая относительно небольшое количество изменений, которые я хочу внести в код.Есть ли более простой способ сделать это?

Ответы [ 3 ]

1 голос
/ 05 мая 2011

Хотя такой плагин, безусловно, был бы полезен, я бы предпочел сделать надстройку для такого инструмента, как ReSharper, а не напрямую для VS.Преимущество в том, что кто-то уже решил огромную кучу проблем, о которых вы даже не мечтали, и поэтому будет намного проще создать такую ​​специфическую функциональность.

1 голос
/ 05 мая 2011

Visual Studio уже имеет API для обнаружения и передачи кода , на который вы можете взглянуть.Это не совсем радость, но она может сработать для этой цели.

0 голосов
/ 05 мая 2011

мне кажется, что у вас должна быть задача MSBuild, похожая на эту http://kindofmagic.codeplex.com/. это правда?

...