asp.net-mvc – 没有注册默认实例,无法自动确定类型
发布时间:2020-12-16 03:38:23 所属栏目:asp.Net 来源:网络整理
导读:我的界面定义如下: public interface IApplicationSettings{ string LoggerName { get; } string NumberOfResultsPerPage { get; } string EmailAddress { get; } string Credential { get; }} 该接口的实现如下: public class WebConfigApplicationSettin
我的界面定义如下:
public interface IApplicationSettings { string LoggerName { get; } string NumberOfResultsPerPage { get; } string EmailAddress { get; } string Credential { get; } } 该接口的实现如下: public class WebConfigApplicationSettings : IApplicationSettings { public string LoggerName { get { return ConfigurationManager.AppSettings["LoggerName"]; } } public string NumberOfResultsPerPage { get { return ConfigurationManager.AppSettings["NumberOfResultsPerPage"]; } } public string EmailAddress { get { return ConfigurationManager.AppSettings["EmailAddress"]; } } public string Credential { get { return ConfigurationManager.AppSettings["Credential"]; } } } 我还创建了一个工厂类来获取WebConfigSettings具体实现的实例,如下所示: public class ApplicationSettingsFactory { private static IApplicationSettings _applicationSettings; public static void InitializeApplicationSettingsFactory( IApplicationSettings applicationSettings) { _applicationSettings = applicationSettings; } public static IApplicationSettings GetApplicationSettings() { return _applicationSettings; } } 然后我解决了依赖关系如下: public class DefaultRegistry : Registry { public DefaultRegistry() { Scan( scan => { scan.TheCallingAssembly(); scan.WithDefaultConventions(); scan.With(new ControllerConvention()); }); For<IApplicationSettings>().Use<WebConfigApplicationSettings>(); ApplicationSettingsFactory.InitializeApplicationSettingsFactory (ObjectFactory.GetInstance<IApplicationSettings>()); } } 现在,当我运行我的应用程序时,它会抛出以下异常: Exception has been thrown by the target of an invocation. 而内在的例外是 No default Instance is registered and cannot be automatically determined for type 'Shoppingcart.Infrastructure.Configuration.IApplicationSettings'rnrnThere is no configuration specified for Shoppingcart.Infrastructure.Configuration.IApplicationSettingsrnrn1.) Container.GetInstance(Shoppingcart.Infrastructure.Configuration.IApplicationSettings)rn 我正在使用StructureMap for MVC5 解决方法
您的代码无法工作的原因是因为当您调用ObjectFactory.GetInstance< IApplicationSettings>()时,您的注册表尚未注册,因此,StructureMap的配置不完整.
我相信你要做的是以下(测试和工作): public class ApplicationSettingsFactory { public ApplicationSettingsFactory(WebConfigApplicationSettings applicationSettings) { _applicationSettings = applicationSettings; } private static IApplicationSettings _applicationSettings; public IApplicationSettings GetApplicationSettings() { return _applicationSettings; } } 您的注册表配置如下: public DefaultRegistry() { Scan(scan => { scan.TheCallingAssembly(); scan.WithDefaultConventions(); scan.With(new ControllerConvention()); }); this.For<IApplicationSettings>().Use(ctx => ctx.GetInstance<ApplicationSettingsFactory>().GetApplicationSettings()); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 如何在ASP.NET MVC应用程序中使用多个视图引
- asp.net-mvc-4 – 如何在mvc4 ActionLink中加密查询字符串I
- asp.net-mvc – asp.net mvc url action忽略旧参数值
- asp.net – Controller.Execute呈现为没有内容类型的文本文
- 如何在ASP.NET Core MVC中获取Url Referrer?
- ASP.NET Core应用的错误处理[4]:StatusCodePagesMiddlewar
- asp.net – MVC3 – 向控制器添加一个文件夹?
- 更优雅的在 Xunit 中使用依赖注入
- asp.net – 在Azure WebApp / Website中使用Windows身份验证
- asp.net-mvc-3 – 如何在MVC3中将附加列添加到WebGrid中
推荐文章
站长推荐
- asp.net-mvc – 如何在ASP.NET MVC 2中执行“cau
- 通过代码实现 OutOfMemory
- asp.net-mvc – ErrorAttribute vs OnException与
- asp.net-mvc-4 – 为什么Razor HTML部分视图不能
- ASP.Net缓存疑难解答 – CacheDuration属性似乎没
- asp.net – 用于查询字符串的基本身份验证的IIS重
- ASP.NET MVC 3 Razor – jQuery Intellisense
- asp.net – 如何将Enter键与aspx页面上的按钮相关
- 如何实现ASP.Net Forms身份验证
- asp.net-mvc-3 – 为什么抛出NULL值异常?
热点阅读