查找字段和比较

时间:2011-12-19 18:36:26

标签: c# plugins dynamics-crm-2011

我正在完成一个插件,但有一个小问题。 我正在尝试使用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é"))
    {

2 个答案:

答案 0 :(得分: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只包含在保存的记录上设置的属性。如果你没有在记录上设置它,它将为null。

答案 1 :(得分:0)

我认为“没有”意味着你期望执行的逻辑不会。在这种情况下,if语句等于false。