5

CRM2011 プラグインで早期バインド型を使用しようとしています。これを有効にするには、 を追加するか、 をProxyTypesBeavior()呼び出す必要があるようEnableProxyTypes()です。ただし、これらのプロパティはどちらもクラスに適用され、インターフェイスOrganizationServiceProxyには存在しません。IOrganizationService

次のコードを使用して組織サービスを取得する場合、上記のプロパティを設定するプロキシ クラスを取得するにはどうすればよいでしょうか。

var serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
var service = serviceFactory.CreateOrganizationService(context.UserId);
4

3 に答える 3

3

CRM Online を使用している場合、サンドボックス モードでスタックしているため、リフレクション ソリューションは機能しません。

IProxyTypesAssemblyProvider インターフェイス (Pavel Korsukov によって提案された) を使用した次のソリューションは、私にとってはうまくいきました ( source )。

var factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));

var proxyTypesProvider = factory as IProxyTypesAssemblyProvider;
if (proxyTypesProvider != null)
{
    proxyTypesProvider.ProxyTypesAssembly = typeof(Xrm.XrmServiceContext).Assembly;
}
// Use the factory to generate the Organization Service.
var service = factory.CreateOrganizationService(context.UserId);
于 2014-02-25T19:17:11.243 に答える
2

このスレッドの Guil は、リフレクションを使用してコード生成プロキシ タイプをサービス ファクトリにバインドするオプションを提供しました。そして、それは私のために働きました。リフレクションには完全な信頼が必要なため、サンドボックスに登録できません。

 factory.GetType().GetProperty("ProxyTypesAssembly").SetValue(factory, typeof(YourCrmContext).Assembly, null);

http://social.microsoft.com/Forums/en-US/crmdevelopment/thread/bc7e93d4-1b36-4e21-9449-f51b67a2e52c/

于 2012-10-11T21:36:31.433 に答える
-2

このように書いて、

IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
于 2012-03-23T07:16:11.877 に答える