C# 查找字段和比较
我正在完成一个插件,但有一个小问题。 我正在尝试使用带有if的查找字段 当我尝试使用C# 查找字段和比较,c#,plugins,dynamics-crm-2011,C#,Plugins,Dynamics Crm 2011,我正在完成一个插件,但有一个小问题。 我正在尝试使用带有if的查找字段 当我尝试使用==操作符时,什么也没发生。使用Equals()方法,我得到一个异常,说对象没有实例化…我做错了什么 创建记录时,插件在预操作时执行 EntityReference modeleContrat = (EntityReference)target.Attributes["new_modeldecontrat"]; throw new InvalidPluginExecutionException(mode
==操作符时,什么也没发生。使用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时没有遇到异常…很高兴您修复了它:)插件可能会在开始调试时遇到麻烦