物业注入定义成员资格提供使用城堡(Property injection in custom memb

2019-06-23 16:17发布

因此,在阅读有关注射到自定义成员提供的可能性远,我发现了两种可能的方式做到这一点:

是下列其中一项: http://bugsquash.blogspot.com/2010/11/windsor-managed-membershipproviders.html

下面笔者基本上建议注册您的自定义提供程序,然后有一个相当可疑的温莎适配器会员(我真的不喜欢在使用容器从得到它的实例您的提供方式HttpApplication ,它最终与包裹温莎适配器)。

这是另一个类似的选项: http://code.google.com/p/webdotnet/source/browse/trunk/Steeg.Framework/Web/Security/MemberShipProvider.cs?r=2

当你只是重写Initialize()有手动实例的依赖关系。 至少在第一个,你不用手(不是提供者本身以外)都需要实例依赖关系。

有那么几个也建议使用某种类型的服务定位器(MVC的或其他方式)

然后,我遇到ninject注入依赖于性能上Membership.Provider喜欢的东西比较容易_kernel.Inject(Membership.Provider) 这是更接近我想要的东西,保持它吸引我首先使用DI组成根概念。

我怎样才能使用城堡实现类似的结果呢?

更新:显然这与生命周期管理的问题。 注入库与Ninject定义成员资格提供

我应该去选择#1呢? 至少在我的实例提供者自己。 所以生命周期管理不应该是一个问题。

Answer 1:

我不会隐式属性注射去,因为容器将跳过财产,如果(正确地)注册的类型不是,而不是(更多信息未能迅速在这里 )。 相反,我会用服务定位器,但写不包含任何逻辑的包装成员提供,而只是从服务定位器请求的成员提供并调用执行。 乔纳斯Gauffin写了这样的事情了MVC (使用DependencyResolver服务定位器),这是相当不错的(也可以用的NuGet ),但它很容易做自己。

虽然使用的是服务定位器被认为是一个反模式,请记住,会员制模式必须通过web.config文件和系统不使用的这部分配置DependencyResolver.Current本身。 还写这样一个DependencyResolverMembershipProvider只是有点力学的和可以考虑的不是应用程序的组合物根的一部分。 呼叫您构成根容器内部是没有问题的。



文章来源: Property injection in custom membership provider using Castle