如何为ASP.NETMVC 5配置结构映射?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我越来越低于错误。我设置它类似于asp.net mvc 4。

没有为此对象定义的无参数构造函数。说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。

异常详细信息:System.MissingMethodException:没有为此对象定义的无参数构造函数。

Exception Details: System.MissingMethodException: No parameterless constructor defined for this object.

当我要将服务类注入到家庭控制器时发生错误

提问于
用户回答回答于

我有一个详细的演练,展示了如何使用最新的StructureMap for MVC 5包来实现这个工作:http : //ardalis.com/resolving-dependencies-in-asp.net-mvc-5-with-structuremap

这与我以前发布的ASP.NET MVC 3中的必要内容并不完全相同:http : //ardalis.com/How-Do-I-Use-StructureMap-with-ASP.NET-MVC-3

基本上你只需安装正确的NuGet包,修改你的控制器来接受依赖关系,并将你的接口连接到IoC.cs中的实现。如果遵循StructureMap的默认约定,则可以为多种类型自动执行此连接。

用户回答回答于

以下步骤适用于我:

  1. 在Visual Studio 2013 RTM中创建一个新的ASP.NET MVC 5应用程序
  2. 安装StructureMap.MVC4NuGet: Install-Package StructureMap.MVC4
  3. 创建一个新的界面: public interface IDependency { string SayHello(); }
  4. 实现这个接口: public class ConcreteDepenedency: IDependency { public string SayHello() { return "Hello World"; } }
  5. 让HomeController使用这个接口: public class HomeController : Controller { private readonly IDependency dependency; public HomeController(IDependency dependency) { this.dependency = dependency; } public ActionResult Index() { return Content(this.dependency.SayHello()); } }
  6. 配置您的容器在~/DependencyResolution/Ioc.csusing StructureMap; using WebApplication1.Controllers; namespace WebApplication1.DependencyResolution { public static class IoC { public static IContainer Initialize() { ObjectFactory.Initialize(x => { x.For<IDependency>().Use<ConcreteDepenedency>(); }); return ObjectFactory.Container; } } }
  7. 用你的应用程序运行 Ctrl+F5
  8. ConcreteDependency成功的注入HomeController

扫码关注云+社区