您的问题使我查看了我的插件IOrganizationService
创建。我写了三个扩展方法来让我的生活更轻松,其中一个使用工厂方法,一个没有(尽管它在插件执行上下文中传递)。这些方法都已经在生产中工作了一段时间。我只是不确定为什么我使用工厂服务,一种方法,而不是另一种方法。
public static IPluginExecutionContext GetContext(this IServiceProvider provider)
{
return (IPluginExecutionContext) provider.GetService(typeof(IPluginExecutionContext));
}
public static IOrganizationService GetService(this IServiceProvider provider, IPluginExecutionContext context)
{
return provider.GetService(context, context.UserId);
}
public static IOrganizationService GetService(this IServiceProvider provider, IPluginExecutionContext context, Guid impersonationUser)
{
var serviceFactory = (IOrganizationServiceFactory)provider.GetService(typeof(IOrganizationServiceFactory));
return serviceFactory.CreateOrganizationService(impersonationUser);
}
编辑
评论者指出,第二种方法调用了第三种方法,这样,两种方法都使用工厂来创建服务。