【问题标题】:Resolve ISitecoreService using SimpleInjector使用 SimpleInjector 解决 ISitecoreService
【发布时间】:2017-04-07 13:34:06
【问题描述】:

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

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

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

【问题讨论】:

  • 请详细说明,ISiteCoreService是如何使用的,两者都使用自始至终,如何确定将哪个ISoteCoreService注入消费者等。

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


【解决方案1】:

像这样?

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

【讨论】:

  • 我们可以让它成为动态的还是有条件的?我的意思是我们可以以某种方式将 web 或 master 传递给它并根据参数值获取它的新实例吗?
  • 请更新您的问题,使您的要求更加明确。我会相应地更新我的答案。
【解决方案2】:

扩展 Stevens 的回答,因为我有使用 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 将使用网站配置中定义的相同数据库进行更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    相关资源
    最近更新 更多