2013-01-18 72 views
1

我爲我的CRM組織生成了ServiceContext。我能夠正確連接到CRM。由於我在app.config文件中擁有所有的上下文配置,我不知道是否可以從已經實例化的OrganizationServiceContext獲取IOrganizationService?CRM 2011 SDK - 從服務上下文獲取底層IOrganizationService

+0

是從一個插件內?還是外部代碼? – Daryl

+0

外部代碼。我有一個上下文的實例,我不知道是否可以從該上下文獲取IOrganizactionService,因此我不必再次實例化。 – jjczopek

回答

0

當我需要從多個地方訪問服務參考時,我通常分兩步進行。首先我試着看看是否有可能將它傳遞給被調用的方法(我假設你有類似下面的內容)。

using (IOrganizationService service 
    = (IOrganizationService) new OrganizationServiceProxy(...)) 
{ 
    DoSomething(); 
    DoSomething(service); 
} 

private void DoSomething(IOrganizationService service) { ... } 

當它失敗(由於技術設置或只是簡單的沉默),我成立了一個私人財產,並在構造函數(或者至少第一通話法)將其指定爲這樣的將來訪問的值。

class MyClass 
{ 
    private IOrganization _service; 
    private IOrganization _Service 
    { 
    get 
    { 
     if(_service == null) 
     _service = (IOrganizationService) new OrganizationServiceProxy(...); 
     return _service; 
    } 
    } 
    ... 
} 

如果你有很多的服務器上運行的代碼,您可能希望所有的東西搬到一個單獨的類,並有向它提出的(以上討論的屬性設置)的呼叫。

我不完全確定我是否正確地得到了你的問題,所以如果我錯過了你的觀點,那就好了。

+2

我沒有實例化IOrganizationService也沒有OrganizationServiceProxy - 我已經從svcutil.exe生成了數據上下文,並且我實例化了這個上下文。我想知道是否有可能從該上下文中提取IOrganizationService以避免雙重困境。 – jjczopek

+0

很酷。從來沒有這樣做過。它的代碼如何以及你在對象中創建了什麼?還是我完全誤解了? –