asp.net-mvc – 依赖注入和ASP.Net成员提供程序
发布时间:2020-12-15 21:08:12 所属栏目:asp.Net 来源:网络整理
导读:我正在为ASP.Net MVC网站创建自定义成员资格提供程序。提供程序作为一个单独的类被创建为更大的库的一部分。需要后端数据存储是灵活的,因为它可以是Xml文件或SQL数据库。我最初的想法是为数据存储创建一个接口,并使用依赖注入将它注入到提供程序中。 最终
我正在为ASP.Net MVC网站创建自定义成员资格提供程序。提供程序作为一个单独的类被创建为更大的库的一部分。需要后端数据存储是灵活的,因为它可以是Xml文件或SQL数据库。我最初的想法是为数据存储创建一个接口,并使用依赖注入将它注入到提供程序中。
最终结果是开发人员可以继承数据存储接口并提供所需的方法来更新数据,然后由自定义成员资格提供程序使用。 然而,通过我自己缺乏技能,我不能弄清楚如何注入类加入会员提供程序,当它添加到网站?将数据存储链接到提供程序需要做些什么?在网站中启用此功能的最简单的方法是什么? 解决方法
如果您通过< membership>配置自定义成员资格提供程序,元素在Web.config文件中,然后我可以看到你将有依赖注入的问题。
提供程序由框架构建和管理,您没有机会拦截该构造以为IDataStore接口提供额外的依赖注入。 如果我的假设是正确的,那么你可以做的是覆盖自定义提供程序中的Initialize()方法,并在那里执行依赖注入。您可以在提供程序配置中具有自定义名称/值设置,它指向实现IDataStore的类型,该类型作为字典的一部分传递到Initialize()方法。 然后,激活数据存储类型的实例并将其设置在相应的属性上: public class MyMembershipProvider : MembershipProvider { public IDataStore DataStore { get; set; } public override Initialize(string name,NameValueCollection config) { var dataStoreType = config["dataStoreProvider"]; if (!String.IsNullOrEmpty(dataStoreType)) { var type = Type.GetType(dataStoreType); DataStore = (IDataStore) Activator.CreateInstance(type); } } } Initialize()将在框架构造您的提供程序的实例后调用,因此这是完成任何其他设置工作(如此)的完美位置。 对于测试场景,您只需对提供程序实例本身设置数据存储属性,因为您将在测试中直接构建它。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 通过使用EF 4.1 DBContext为SaveChanges分配
- asp.net-mvc – 选择哪种ASP.NET编程模型?
- asp.net-mvc – 如何在本地化的文本中嵌入链接
- asp.net – web.config继承:导致XML解析错误
- asp.net-mvc – 如何从umbraco mvc中的表面控制器添加查询字
- 谈谈分布式事务之三: System.Transactions事务详解[上篇]
- asp.net-mvc – 自定义控制器工厂,依赖注入/结构图问题与AS
- yield在WCF中的错误使用——99%的开发人员都有可能犯的错误
- asp.net – 使用json仅序列化对象的一部分
- asp.net-core – 如何使用Autofac和ASP.NET Core在控制器上
推荐文章
站长推荐
- asp.net-core – project.json版本控制格式
- asp.net – MVC的最佳实践..使用接口的ViewModel
- asp.net-mvc – 如何从ASP.NET MVC VIEWS文件夹访
- asp.net-mvc-3 – 处理DbContext后的问题
- asp.net – 将数据绑定到网格视图
- asp.net-mvc – 使用nHibernate.validator的MVC.
- asp.net-mvc – 重启后浏览器不缓存资源
- asp.net-mvc – ASP.NET MVC多站点SSO使用OpenID
- asp.net-web-api – 如何在Web Api调用期间获取用
- asp.net – Linq-to-SQL和DateTime的奇怪
热点阅读