2013-06-25 25 views
2

我正在創建一個Dynamics CRM 2011的插件,以便在排定潛在客戶時執行。我用這個代碼使用context.InputParameters [「Target」]

IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); 
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); 
IOrganizationService service = factory.CreateOrganizationService(null); 
Entity curEntity = (Entity)context.InputParameters["Target"]; 

但是當我得到context.InputParameters["Target"]它說沒有找到密鑰。如何在獲得潛在客戶資格時獲得主要實體?

回答

5

如果你的插件是在QualifyLead消息(Lead作爲主要實體),你可以得到這樣的參考牽頭執行:

public void Execute(IServiceProvider serviceProvider) 
{ 
    ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); 
    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); 
    if (context.InputParameters.Contains("LeadId") && context.InputParameters["LeadId"] is EntityReference) 
    { 
     EntityReference leadReference = (EntityReference)context.InputParameters["LeadId"]; 
     Guid leadId = leadReference.Id; 
     // rest of your code 

基本上這個消息不包含Target參數,而是包含LeadId參數。

+0

是否有任何概覽顯示,哪些消息提供哪些InputParameters?現在我要去調試一個插件並查找給定的參數。 – Marvin

+0

好問題,但我從來沒有找到可能的輸入參數列表 –

+0

我還沒有找到一個好的概述,但明確的答案是在MSDN文章[理解傳遞給插件的數據上下文](https:// msdn.microsoft.com/en-us/library/gg309673.aspx#bkmk_inputandoutput):「請求中實際公共屬性的名稱。」因此請查看您的OrganizationRequest的屬性。在你的情況下,[QualifyingLeadRequest](https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.qualifyleadrequest_properties.aspx)。你可以看到有一個LeadId屬性,但沒有目標。 –