Asp.net mvc 3 如何使用StructureMap将服务依赖项注入MVC sitemap DynamicNodeProviderBase
考虑以下代码:Asp.net mvc 3 如何使用StructureMap将服务依赖项注入MVC sitemap DynamicNodeProviderBase,asp.net-mvc-3,dependency-injection,structuremap,mvcsitemapprovider,Asp.net Mvc 3,Dependency Injection,Structuremap,Mvcsitemapprovider,考虑以下代码: public class InboxMenuItemDynamicProvider : DynamicNodeProviderBase { private IMyService _myService { get; set; } public InboxMenuItemDynamicProvider(IActionService actionService) { _myService = myService;
public class InboxMenuItemDynamicProvider : DynamicNodeProviderBase
{
private IMyService _myService { get; set; }
public InboxMenuItemDynamicProvider(IActionService actionService)
{
_myService = myService;
}
public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
{
// use _myService here....e.g. db access
}
}
}
BoxMenuItemDynamicProvider中的公共类:DynamicNodeProviderBase
{
私有IMyService_myService{get;set;}
公用InboxMenuItemDynamicProvider(IActionService actionService)
{
_myService=myService;
}
公共重写IEnumerable GetDynamicNodeCollection()
{
//在此处使用_myService…,例如数据库访问
}
}
}
如何使用StructureMap和MVC3将服务依赖注入Mvc Sitemap DynamicNodeProvider?我正在使用MVC3依赖项解析器
然而,在运行应用程序时,我得到了一个“无默认构造函数”错误。我需要以某种方式将服务依赖项注入到提供者中,但我完全不知道在哪里/如何注入它们。我甚至不知道Mvc站点地图是否可能在依赖解析程序之外。请参阅以下链接:
我想你可以用:
private IMyService _myService
{
get
{
return DependencyResolver.Current.GetService<IMyService>();
}
}
private IMyService\u myService
{
得到
{
返回DependencyResolver.Current.GetService();
}
}
在构造函数中不执行任何特定操作可以显示注册表代码吗?好的,与其使用依赖项注入,不如在运行时解决它?我想我不需要对它进行单元测试,所以实际上并不需要DI。所有问题都是在运行时使用DI解决的。您仍然可以对此进行单元测试,只需以不同的方式配置容器。