asp.net-mvc – ASP.NET MVC,MVCContrib,Structuremap,让它作为c
发布时间:2020-12-16 06:41:27 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用structuremap来正确创建我的控制器,我正在使用DI将一个INewsService注入一个NewsController,这是我唯一的构造函数. public class NewsController : Controller{ private readonly INewsService newsService; public NewsController(INewsServi
我正在尝试使用structuremap来正确创建我的控制器,我正在使用DI将一个INewsService注入一个NewsController,这是我唯一的构造函数.
public class NewsController : Controller { private readonly INewsService newsService; public NewsController(INewsService newsService) { this.newsService = newsService; } public ActionResult List() { var newsArticles = newsService.GetNews(); return View(newsArticles); } } 我正在使用此代码启动应用程序 public class Application : HttpApplication { protected void Application_Start() { RegisterIoC(); RegisterViewEngine(ViewEngines.Engines); RegisterRoutes(RouteTable.Routes); } public static void RegisterIoC() { ObjectFactory.Initialize(config => { config.UseDefaultStructureMapConfigFile = false; config.AddRegistry<PersistenceRegistry>(); config.AddRegistry<DomainRegistry>(); config.AddRegistry<ControllerRegistry>(); }); DependencyResolver.InitializeWith(new StructureMapDependencyResolver()); ControllerBuilder.Current.SetControllerFactory(typeof(IoCControllerFactory)); } } 但Structuremap似乎不想注入INewsService,我得到了错误 我错过了什么? 解决方法
我使用StructureMap提供的“默认约定”机制来避免需要单独配置每个接口.下面是我用来完成这项工作的代码:
我的Global.asax在Application_Start中有这一行(它使用MvcContrib的StructureMap工厂): protected void Application_Start() { RegisterRoutes(RouteTable.Routes); ObjectFactory.Initialize(x => { x.AddRegistry(new RepositoryRegistry()); }); ControllerBuilder.Current.SetControllerFactory(typeof(StructureMapControllerFactory)); } RepositoryRegistry类看起来像这样: public class RepositoryRegistry : Registry { public RepositoryRegistry() { Scan(x => { x.Assembly("MyAssemblyName"); x.With<DefaultConventionScanner>(); }); } } DefaultConventionScanner查找遵循ISomethingOrOther和SomethingOrOther的命名约定的接口/类对,并自动将后者作为前一个接口的具体类型. 如果您不想使用该默认约定机制,那么您将在Registry类中添加代码,以使用以下语法将每个接口明确映射到具体类型: ForRequestedType<ISomethingOrOther>().TheDefaultIsConcreteType<SomethingOrOther>(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – MVC3 TextBoxFor与EditorFor – 每个问题
- azure – 从我的ASP.NET网站执行按需Web作业?
- asp.net-mvc – 在ASP.NET MVC 3中的子文件夹中添加视图
- asp.net-mvc – 我们如何使用ASP.NET MVC 4和MEF 2支持模块
- asp.net-mvc – MVC服务层 – 每个控制器或其他设计的服务?
- asp.net-mvc-3 – 自动映射似乎不像’Name’字段
- asp.net-mvc – 我在哪里可以初始化Orchard模块中的AutoMap
- ASP.NET中下载文件的几种实例代码
- asp.net – 添加电子邮件附件
- asp.net-mvc – 使用MVC FileStream播放视频文件的问题
推荐文章
站长推荐
- 如何使用Velocity设计ASP.NET MVC站点进行缓存?
- asp.net-mvc – 可以使用ASP.Net MVC Razor视图来
- asp.net – 验证嵌套的ViewModels
- 尝试调试我迁移的ASP.NET(WebForms)应用程序时出
- asp.net-mvc – 如何使用MVC控制器返回JSON
- 在asp.net上单击按钮的空文本框的Javascript验证
- 为什么我得到“线程被中止”在asp.net?
- asp.net-mvc – 查找:DisplayTemplates速度
- asp.net – 代码后面的根运算符(“?”)地址的相对
- asp.net-mvc – 可配置的应用程序洞察检测密钥
热点阅读