我有一个现有的 ASP.NET MVC 应用程序,并且正在使用 StructureMap 作为我选择的 IOC 容器。目前,当控制器需要 IMembershipProvider 时,我使用 StructureMap 根据我的 web.config 文件中的 BuyerMembershipProvider 配置在控制器的构造函数中注入一个具体实例,如下面的解决方案代码所示:
ObjectFactory.Initialize(x =>
{
x.ForRequestedType<IMembershipService>().TheDefaultIsConcreteType<AccountMembershipService>();
x.ForRequestedType<IFormsAuthentication>().TheDefaultIsConcreteType<FormsAuthenticationService>();
x.ForRequestedType<MembershipProvider>().TheDefault.IsThis(SecurityProvider.Providers["BuyerMembershipProvider"]);
});
这工作正常。但是,它绑定到“买家”用户类型。卖家信息存储在不同的数据库中,将有不同的表来存储会员信息。本质上,我希望能够根据上下文注入 BuyerMembershipProvider 或 SellerMembership Provider,并在我的 objectfactory 初始化中具有以下内容:
x.ForRequestedType<MembershipProvider>().TheDefault.IsThis(SecurityProvider.Providers["BuyerMembershipProvider"]);
x.ForRequestedType<MembershipProvider>().TheDefault.IsThis(SecurityProvider.Providers["SellerMembershipProvider"]);
初始化对象工厂时是否可以在两个具体实现之间做出决定?
非常感谢任何帮助,在此先感谢!J.P