【问题标题】:Custom services from IServiceProvider in D365D365 中来自 IServiceProvider 的自定义服务
【发布时间】:2021-03-08 23:00:19
【问题描述】:

我们最近开始使用 D365 构建应用程序。这是从我们使用 spring 进行依赖注入的 java 的转变。 IServiceProvider 似乎做了依赖注入,但我还没有找到任何方法让它与我们的本地服务一起工作。

我们的代码如下所示:

public void Execute(IServiceProvider serviceProvider)
{
    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
    IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
    IOrganizationService service = factory.CreateOrganizationService(context.UserId);
     
    // ... do stuff ...
}

我想在以下行中添加:

MyHomeGrownService myHomeGrownService = (MyHomeGrownService )serviceProvider.GetService(typeof(MyHomeGrownService));

但是我不知道怎么注册MyHomeGrownService;我也没有找到很多关于这个主题的文档。

如果没有正确的依赖注入,开发人员不得不在代码中使用new,这使得正确的单元测试几乎不可能。

如何注册自定义服务?

【问题讨论】:

    标签: c# dynamics-365


    【解决方案1】:

    现在,我创建了一个委派的IServiceProvider 实现,我用它在每个插件调用中包装给定的IServiceProvider。该自定义实现知道我们的服务,并会在询问时创建这些服务。其他一切,由它委托。

    我试图让委派IServiceProvider 更快,但我还没有在实时系统中尝试过,所以我不知道它的性能如何。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-14
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多