Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找字段和比较_C#_Plugins_Dynamics Crm 2011 - Fatal编程技术网

C# 查找字段和比较

C# 查找字段和比较,c#,plugins,dynamics-crm-2011,C#,Plugins,Dynamics Crm 2011,我正在完成一个插件,但有一个小问题。 我正在尝试使用带有if的查找字段 当我尝试使用==操作符时,什么也没发生。使用Equals()方法,我得到一个异常,说对象没有实例化…我做错了什么 创建记录时,插件在预操作时执行 EntityReference modeleContrat = (EntityReference)target.Attributes["new_modeldecontrat"]; throw new InvalidPluginExecutionException(mode

我正在完成一个插件,但有一个小问题。 我正在尝试使用带有if的查找字段

当我尝试使用
==操作符时,什么也没发生。使用
Equals()方法
,我得到一个异常,说
对象没有实例化
…我做错了什么

创建记录时,插件在预操作时执行

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

    throw new InvalidPluginExecutionException(modeleContrat.Name);

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

我假设“无”意味着您期望执行的逻辑没有。在这种情况下,if语句等于false。

我假设您在问题中输入的代码被用于测试,因为由于异常,它当前不会运行

您得到的
对象未实例化的错误
的意思与tin上的意思完全相同,您的
modeleContrat
变量中没有值

因此,代码应该更具防御性,如下所示:

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

if(modeleContrat != null && modeleContrat.Name == ("Contrat d'unité"))
{
    //Do Stuff
}
至于未实例化的
modelecontat
。由于您的插件正在Pre-Create上运行,并且您正在从
Target
检索属性,因此我假设您在某个地方从插件上下文中提取输入参数来检索属性


这很好,但是
Target
将只包含在保存的记录上设置的属性。如果您没有在记录上设置它,它将为空。

对于上面的代码,
If
永远不会被计算,因为您事先抛出了一个异常。这是正确的代码吗?嗨,克里斯,抛出的异常只是一个测试。实际上不,即使语句等于false,也应该更新一些字段。嗨,克里斯,刚刚解决了它!我不理解对象没有实例化的事实,因为lookupfield是根据另一个实体默认设置的。我在尝试恢复名称时遇到异常,但在尝试恢复id时没有遇到异常…很高兴您修复了它:)插件可能会在开始调试时遇到麻烦