【问题标题】:How to reference ViewModels (in separate Web project) in an Interface in another project?如何在另一个项目的接口中引用 ViewModel(在单独的 Web 项目中)?
【发布时间】:2020-02-21 21:48:44
【问题描述】:

我正在为处理各种表单提交方法的控制器创建一个接口,这些方法都使用特定的 ViewModel 作为参数。我的目标是使用依赖注入(DI)将接口传递到不同的控制器,该控制器需要执行接口中的一种方法。

当接口被放置在 Web 项目中时,接口和控制器工作正常,但是一旦我将接口移动到接口项目中,对 ViewModels 的引用就中断了,我无法弄清楚如何解决它们。

我可以使用它来直接调用该方法而不使用 DI 路由,但是我们网站的其余部分使用 DI,我不想打破这种模式:

var controller = DependencyResolver.Current.GetService<FormController>();
controller.SendForm(model);

我试过了:

  • 将 Web 项目添加为 Interfaces 项目的程序集引用,但这会创建循环引用(请 VS 告知。)

  • 智能感知,无建议。

  • 添加 Using 指令,但 Web 项目不是可供选择的可用命名空间

这是 4.6.1 上的 ASP.NET MVC 站点。控制器位于 Web 项目下的 Controllers 文件夹中。新接口位于同一解决方案中的单独接口项目中。

【问题讨论】:

  • 如何将视图模型也移动到自己的项目中,然后在界面和 Web 项目中引用它?

标签: c# asp.net-mvc dependency-injection interface controller


【解决方案1】:

将视图模型移动到自己的项目中,然后在界面和网络项目中引用它。

【讨论】:

  • 听起来比我想做的工作多一点,因为我必须在 Web 项目中引用 ViewModel 的任何地方添加 using,对吗?但仍然是一个可靠的建议,如果这是最好的解决方案,我会标记为正确的。感谢您的帮助。
  • 为什么必须在引用 ViewModel 的地方添加 using 语句?你的 ViewModel 是 POCO 吗?
  • 是的,他们是 POCO。如果它们被移动到一个新项目中(带有一个新的命名空间),那么我必须在每个引用原始 Web 项目中的 ViewModel 的文件中添加一个 Using 指令。不是世界末日,但不太理想,因为我们有很多。
  • @webDevAndEverythingElse 好吧,如果引入 using 可以解决您的问题,那么您必须这样做吗?这怎么不够理想?
猜你喜欢
  • 1970-01-01
  • 2011-01-19
  • 2017-12-27
  • 1970-01-01
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
相关资源
最近更新 更多