代码生成器或 T4 模板,它们真的很邪恶吗?

2023-12-19

我听人们说不应使用代码生成器和 T4 模板。其背后的逻辑是,如果您使用生成器生成代码,那么有一种更好更有效的方法通过泛型和模板来构建代码。

虽然我稍微同意上面的这一说法,但我还没有真正找到有效的方法来构建可以实例化自身的模板。换句话说,我永远做不到:

return new T();

此外,如果我想根据数据库值生成代码,我发现使用Microsoft.SqlServer.Management.SMO与 T4 模板结合使用,可以很好地生成大量代码,而无需复制/粘贴或使用 resharper。

我发现泛型也存在许多问题,令我震惊的是,有很多开发人员不理解它们。当我确实检查泛型以寻求解决方案时,有时它会变得复杂,因为 C# 规定您不能做一些在我看来似乎合乎逻辑的事情。

你怎么看?您更喜欢构建生成器,还是更喜欢使用泛型?另外,仿制药能走多远?我对泛型有相当多的了解,但我总是遇到一些陷阱和陷阱,导致我求助于 T4 模板。

处理需要大量灵活性的场景的更合适方法是什么?哦,作为这个问题的额外奖励,关于 C# 和泛型有哪些好的资源?


你可以做 new T();如果你这样做

public class Meh<T>
  where T : new()
{
  public static T CreateOne()
  {
    return new T();
  }
}

至于代码生成器。我每天都使用一个,没有任何问题。事实上我现在正在使用一个:-)

泛型解决一个问题,代码生成器解决另一个问题。例如,使用 UML 编辑器创建业务模型,然后使用持久性代码生成类,就像我一直使用的那样这个工具 http://capableobjects.com/ProductsServices_ECO.aspx使用泛型无法实现,因为每个持久类都是完全不同的。

至于仿制药的良好来源。最好的一定是乔恩·斯基特的书 https://rads.stackoverflow.com/amzn/click/com/1933988363当然! :-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码生成器或 T4 模板,它们真的很邪恶吗? 的相关文章

随机推荐