自动标记c#类以进行序列化

时间:2011-05-04 19:54:31

标签: c# wcf serialization code-generation protocol-buffers

我想构建一个可视化工作室插件,自动注释类以进行序列化。例如,对于内置的二进制序列化程序,我只需将[Serializable]添加到类声明中,对于WCF,它可以将[DataContract]添加到类中,[DataMember]添加到成员和属性中(我可以获得) [KnownType]信息通过反思和适当的注释)。如果使用协议缓冲区,则可以添加[ProtoContract][ProtoMember][ProtoInclude]属性,依此类推。 我假设我们要使用它的类是安全的序列化(因此没有套接字或不可序列化的东西)。我想知道的是什么是更简单的方法来获取现有的代码片段(或更简单的二进制代码)并添加这些属性,同时保留其余的代码完整。我很好,输出是源代码或二进制。

我想到了使用C#解析器的想法,解析一切找到有趣的代码元素,注释它们并回写代码。然而,考虑到我想对代码进行相对少量的修改,这似乎非常复杂。有更简单的方法吗?

3 个答案:

答案 0 :(得分:1)

虽然这样的插件肯定会是一个有用的东西,但我会考虑为ReSharper而不是VS直接创建一个加载项。优点是有人已经解决了你甚至没想过的大量问题,因此很容易构建这样一个特定的功能

答案 1 :(得分:1)

Visual Studio已经有了API for discovering and emitting code,您可以查看一下。使用它并不是一件令人高兴的事,但可以为此目的而努力。

答案 2 :(得分:0)

在我看来,你需要有一个类似于http://kindofmagic.codeplex.com/的MSBuild任务。那是对的吗?