2011-12-19 109 views
1

我正在完成一個插件,但有一個小問題。 我想用if來使用查找字段。查詢字段和比較

當我嘗試== operator,沒有任何反應。隨着Equals() method,我得到了一個例外說object is not instantiated ...我做錯了什麼?

插件是在創建記錄時的預操作時執行的。

EntityReference modeleContrat = (EntityReference)target.Attributes["new_modeldecontrat"]; 

    throw new InvalidPluginExecutionException(modeleContrat.Name); 

    if (modeleContrat.Name == ("Contrat d'unité")) 
    { 
+0

使用上面的代碼,if不會被評估,因爲您事先發生異常。這是正確的代碼嗎? – ChrisWue 2011-12-19 18:40:24

+0

嗨克里斯,拋出的異常只是一個測試。 – MademoiselleLenore 2011-12-20 08:17:58

回答

3

我假設你放入問題的代碼被你用來測試,因爲它目前不會運行,由於例外。

你得到的錯誤Object not Instantiated意味着它在罐子上說的是什麼,你的modeleContrat變量沒有價值。

因此,代碼應該是多一點的防守,像這樣:

EntityReference modeleContrat = (EntityReference)target.Attributes["new_modeldecontrat"]; 

if(modeleContrat != null && modeleContrat.Name == ("Contrat d'unité")) 
{ 
    //Do Stuff 
} 

至於modeleContrat不被實例化。由於您的插件正在Pre-Create上運行,並且您從Target中檢索屬性,我假設您將輸入參數從插件上下文中取出以檢索它。

這很好,但Target將只包含在保存的記錄上設置的屬性。如果您沒有將其設置在記錄中,則它將爲空。

+0

嗨克里斯,剛解決它!我不明白這個對象不是實例化的,因爲lookupfield是根據另一個實體默認設置的。我嘗試恢復名稱時遇到了異常,但在嘗試恢復ID時沒有發生異常... – MademoiselleLenore 2011-12-20 15:13:31

+0

很高興您將它修復:)當插件開始運行時,插件可能會很麻煩 – Chris 2011-12-20 15:44:44

0

我認爲「無」意味着您期望執行的邏輯不會。在這種情況下,if語句等同於錯誤。

+0

實際上不是,即使聲明等於false,也應該更新一些字段。 – MademoiselleLenore 2011-12-20 08:17:11