あなたの質問により、私はプラグインIOrganizationService
の作成を検討しました。私は自分の生活を楽にするために3つの拡張メソッドを作成しましたが、そのうちの1つはファクトリメソッドを使用し、もう1つは使用しません(プラグイン実行コンテキストでは渡されますが)。これらのメソッドはすべて、しばらくの間本番環境で機能しています。なぜファクトリーサービスを使用するのか、一方の方法では使用しないのか、もう一方の方法では使用しないのかわかりません。
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);
}
編集
コメント提供者は、2番目のメソッドが3番目のメソッドを呼び出すことを指摘しました。このように、両方のメソッドはファクトリを使用してサービスを作成しています。