3

我使用 T4 生成了一些实体类,但我忘了制作它们Serializable。那么有没有什么解决方案可以使用类似T4为我的所有类添加Serializable属性的方法?

4

2 回答 2

1

那些生成的类是部分类吗?如果是这样,请使用另一个 T4 模板来生成用 Serializable 属性修饰的部分类定义。

否则,您可以使用Visual Studio CodeModel来识别在另一个 T4 模板中需要此实现的所有类,然后让此 T4 模板添加必要的代码片段。

如果您使用有形的 T4 编辑器,它带有一个免费的模板库,据我所知,有一个名为“Add NotifyPropertyChanged”的模板,它几乎可以满足您的需求:在解决方案中发现代码类并使其实现给定的接口。您可以轻松地调整它并获得所需的功能。

希望有帮助。

于 2013-08-21T07:36:20.420 回答
1

如果您已经修改了生成的类,我认为您可能会发现使用 Visual Studio 的全局替换更容易找到需要更改的类。(如果这不可能,编写一个快速控制台应用程序来处理文件并不难)。

使用 T4,您可以控制哪些文件被覆盖,例如使用T4 ToolboxOutput.PreserveExistingFile附带的。

<#
  var t = new SampleTemplate();
  t.Output.File = "Sample.cs";
  t.Output.PreserveExistingFile = true;
  t.Render();
#>

然后您可以删除要重新创建的特定文件。但是,无论您确定要覆盖哪些文件,自上次重新生成以来对这些文件所做的任何更改都将丢失。一个建议是将您的模板构建为部分类,以便您可以将所有手动修改放在一个单独的文件中(但如果您已经修改了生成的类,这并不能真正帮助您)。

于 2013-08-21T08:36:36.573 回答