【问题标题】:customizing some auto generated codes with T4使用 T4 自定义一些自动生成的代码
【发布时间】:2013-01-25 14:39:07
【问题描述】:

我首先在 EF 代码中使用“EF 4.x DbContext Fluent Genarator”生成我的 poco 类、映射文件和上下文文件。(实际上“EF 4.x DbContext Fluent Genarator”使用 3 个 T4 文件) 现在我想对自动生成的代码进行一些更改:

  1. 更改某些类的命名空间。
  2. 将某些类的某些字段标记为 [NonSerializable]
  3. 更改我添加到 T4 模板的 pocos 上一些自动生成的自定义方法的正文。

如何继续使用 T4 文件来完成这些工作?

【问题讨论】:

    标签: c# templates customization t4 auto-generate


    【解决方案1】:

    对于#3。这应该会有所帮助

    这些类是分部类,因此您可以创建一个与分部具有相同类的新 .cs 文件。 添加自定义方法。

    我想不出#1 的直截了当的方法。 & #.2 因为 当有人再次更新/构建时,对自动生成的类所做的更改将丢失。

    【讨论】:

    • 谢谢,但是对于#3,我该怎么做呢?例如,如果在我的自动生成的代码中我有 public string ToString(); 返回一个值,我如何使用部分类更改它,返回另一个值?
    • 假设您已经生成了部分类 Client -> ClientName 是字符串属性 -> GetClientNumber() 是方法返回数字。现在在解决方案中-> 在 Generated Client.cs 的同一项目下创建一个文件夹-> 扩展类-> 在此创建 ClientExtend.cs 但该类将是部分客户端-> 现在在此处创建新的自定义方法/属性-> 例如新方法可以是 GetClientNumberAsString() 现在客户端对象将同时具有生成方法和自定义方法。
    • 顺便说一句 - 扩展方法也可以提供帮助。例如为将数字作为字符串返回的客户端创建扩展方法。
    • 不,我不想更改我的方法的名称,因为例如在 DataGridview 中,ToString() 方法很特殊。 (如果将DGV的一列绑定到导航属性,它会调用导航属性对象的ToString())
    • hmm 很有趣 - 我没有想法 - 当你得到答案时发布。快乐编码。
    猜你喜欢
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 2021-01-21
    • 2015-11-24
    • 1970-01-01
    相关资源
    最近更新 更多