2011-12-19 112 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