5

我编写了一些 razor 助手,这些助手使用的函数包括 T4MVC 生成的扩展方法。我现在想将这些移动到一个控件库中,以便它们可以在多个 mvc 应用程序中使用。我最初使用的想法是我可以将模板的副本放入控件库中,这很有效,缺点是应用程序中使用的模板然后在相同的命名空间中重新生成相同的扩展方法。因为我正在使用一些需要 ActionResult 接口的扩展,所以我确实需要命名空间保持不变。

我想知道的是,是否有一种已知的方法来使用控件库中的扩展以及引用该库的应用程序,或者是否需要更改模板以便可以通过生成或不生成静态扩展方法设置文件中的标志?我还想知道静态扩展是否可以包含在与模板一起存在的单独 cs 文件中。所以我们有 2 个类 T4Extensions 和 DynamicT4Extensions?

不过,这可能会强制使用接口 IT4MVCActionResult,

4

1 回答 1

2

这与http://forums.asp.net/p/1510753/3603100.aspx相似但不完全相同。

我想知道解决方案是否可能是在设置文件中添加一个新开关,以关闭这些静态方法的生成。因此,如果您知道您已经从某个引用的程序集中获取它们,您将在应用程序中将它们关闭。

虽然如果你有多个不相关的库,每个库都需要使用这些方法,这可能仍然会崩溃,因为应用程序会得到一个模棱两可的引用。

请注意,我们不能将方法设置为内部方法,因为其中一些方法需要从位于不同程序集中的视图中调用。

理想情况下,我宁愿避免将它们放在单独的文件中,因为一些用户可能会开始抱怨 T4MVC 引入了太多文件。

对不起,不是一个明确的答案,而是更多地思考可能性。:)

于 2011-04-06T23:36:29.973 回答