2011-06-27 13 views
5

CRM2011 eklentisinde erken bağlı türleri kullanmaya çalışıyoruz. Bunu etkinleştirmek için, bir ProxyTypesBeavior() eklememiz veya EnableProxyTypes() numaralı telefonu aramamız gerekiyor. Ancak, bu özelliklerin her ikisi de OrganizationServiceProxy sınıfına uygulanır ve IOrganizationService arabiriminde yoktur.CRM2011'de OrganizationServiceProxy Oluşturma Eklentisi Erken bağlama kullanımı

Kuruluş hizmetini almak için aşağıdaki kodu kullanıyorsak, yukarıdaki özellikleri ayarlamak için bir proxy sınıfı nasıl elde edeceğiz? Böyle

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

cevap

-2

Yaz, bu iş parçacığı üzerinde

IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); 
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); 
+0

lütfen açıkla – johannes

+1

Bu bir yanıt değil, yalnızca türden türler yerine müstehcen türlerin kullanılması önerisidir. Bu stilistik bir tercihtir ve kesinlikle var kullanmak yanlış değildir! –

2

Guil hizmet fabrikasına kod gen vekil türlerini bağlamak için yansıma kullanma seçeneğini sundu. Ve benim için çalıştı. Yansıma tam güvene ihtiyaç duyduğundan onu sanal alana kaydedemezsiniz. Eğer sandbox modunda sıkışmış beri

factory.GetType().GetProperty("ProxyTypesAssembly").SetValue(factory, typeof(YourCrmContext).Assembly, null); 
CRM Online kullanarak olanlar için

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

3

, yansıma çözüm çalışmayacaktır.

IProxyTypesAssemblyProvider arabirimini kullanan (Pavel Korsukov tarafından önerilen) aşağıdaki çözüm benim için çalıştı (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); 
İlgili konular