【问题标题】:T4MVC Base controller doesn't have default constructorT4MVC 基本控制器没有默认构造函数
【发布时间】:2012-07-29 11:05:57
【问题描述】:

我的控制器继承自另一个没有默认构造函数的控制器。 T4MVC 生成以下构造函数,假设基本控制器具有默认构造函数:

protected MyControllerController(Dummy d) { }

我该如何解决这个问题?有趣的是,根据this 页面,2.4.00 版“修复了基本控制器没有默认 ctor 时的问题”。我也 found 这个 SO question,但我的基本控制器不是通用的。

【问题讨论】:

  • 我能够用 2.10.0 版重现您的问题...我认为您应该在 T4MVC 问题跟踪器上发布问题,直到它修复使用链接 SO 问题中的解决方法。即为您的基类添加一个默认构造函数。
  • 我出去了,但我会在本周末尝试调查此事。

标签: asp.net-mvc t4mvc


【解决方案1】:

如果您将基本控制器抽象化,这应该可以正常工作。我假设它永远不需要直接用作控制器?如果是这样,那么您总是可以创建另一个非抽象派生类来处理它。

【讨论】:

  • 是的,有几种方法可以解决这个问题,但我正在研究这个场景(我在这里描述过:stackoverflow.com/questions/11576606/…),这看起来很合理。如果 T4MVC 在没有 hack 的情况下支持它不是很好吗?
  • 这里没有关注你。您是否直接使用基本类型?如果不是,那么将其标记为抽象不是 hack,这是正确的做法。
  • 我是直接用的。我只是将派生控制器的一些特定依赖项传递给它。
  • 我遇到了同样的问题,但将其标记为摘要并解决问题。添加一个空的构造函数会破坏依赖注入,所以这也不是一个选项。
  • 你是说抽象化对生成的代码没有影响吗?我希望这会导致在抽象库中生成默认 ctor。然而,您正在描述添加一个默认 ctor 作为您尝试过的 alternate 的东西,所以这里的东西没有加起来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 2023-03-20
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多