使用SimpleInjector解析ISitecoreService

时间:2017-04-07 13:34:07

标签: sitecore ioc-container simple-injector glass-mapper

ISitecoreService在其构造函数(web或master)中接受数据库名称作为字符串参数

ISitecoreService service = new SitecoreService("master"); //or
ISitecoreService service = new SitecoreService("web");

我是否有可能将数据库名称作为参数动态发送到IoC并解决它?例如,我发送web / master字符串参数并获取ISitecoreService的新实例

2 个答案:

答案 0 :(得分:1)

喜欢这个吗?

container.Register<ISitecoreService>(() => new SitecoreService("master"));

答案 1 :(得分:0)

扩展史蒂文斯的回答,因为我有使用Sitecore的经验,我喜欢Simpleinjector。

如果您愿意,当您的应用程序使用配置工厂进行引导时,您可以访问Sitecore配置,访问网站站点配置并使用数据库属性。

var sites = Sitecore.Configuration.Factory.GetSiteInfoList();
var website = sites.Single(s => s.Name == "website");

ISitecoreService service = new SitecoreService(website.Database);
container.Register<ISitecoreService>(() => service);

这样,您的SitecoreService将使用网站配置中定义的相同数据库进行新建。