Создание OrganizationServiceProxy в плагине CRM2011 для использования раннего связывания - PullRequest
5 голосов
/ 27 июня 2011

Мы пытаемся использовать ранние типы привязки в плагине CRM2011.Чтобы включить это, нам нужно либо добавить ProxyTypesBeavior(), либо вызвать EnableProxyTypes().Однако оба эти свойства применяются к классу OrganizationServiceProxy и не существуют в интерфейсе IOrganizationService.

Так что, если мы используем следующий код для получения службы организации, как мы собираемсяполучить прокси-класс для установки вышеуказанных свойств?

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

Ответы [ 3 ]

3 голосов
/ 25 февраля 2014

Для тех из вас, кто использует CRM Online, решение для отражения не будет работать, поскольку вы застряли в режиме песочницы.

Следующее решение с использованием интерфейса IProxyTypesAssemblyProvider (предложено Павлом Корсуковым) сработало для меня ( источник ).

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);
2 голосов
/ 12 октября 2012

Гиль в этом потоке предлагал использовать рефлексию для привязки типов прокси кода gen к фабрике сервисов.И это сработало для меня.Не удастся зарегистрировать его в песочнице, поскольку для отражения необходимо полное доверие.

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

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

0 голосов
/ 23 марта 2012

Напишите так,

IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...