我正在处理插件上下文中的默认实体(email
)的自定义(扩展)属性,尽管该方法适用于创建(.Add()
),但它不适用于更新(也不是.Update()
方法)。这是实际的代码:
public class EmailPreCreateHandler : IPlugin
{
DynamicEntity dynamicEntity;
if (context.InputParameters.Properties.Contains("Target")
&& context.InputParameters.Properties["Target"] is DynamicEntity)
{
dynamicEntity = (DynamicEntity)context.InputParameters.Properties["Target"];
if (dynamicEntity.Name != EntityName.email.ToString()) { return; }
}
else { return; }
try
{
if (dynamicEntity.Properties.Contains("new_property1")
|| dynamicEntity.Properties.Contains("new_property2"))
{
var new_property3 = new CrmBooleanProperty("new_property3", new CrmBoolean(true));
dynamicEntity.Properties.Add(new_property3);
}
}
catch (SoapException exception)
{
throw new InvalidPluginExecutionException(
"An error occurred with the plug-in.", exception);
}
}
}
我想知道我是否应该这样做才能让它发挥作用?
dynamicEntity.Properties.Remove(new_property3);
dynamicEntity.Properties.Add(new_property3);
注册详情
(大会)
(步骤)
我真的很感激任何反馈。非常感谢,
答案 0 :(得分:2)
如果new_property3
或new_property1
存在,您似乎会添加/更新new_property2
。
if (dynamicEntity.Properties.Contains("new_property1") || dynamicEntity.Properties.Contains("new_property2"))
{
dynamicEntity["new_property3"] = new CrmBoolean(true);
}
如果您为 写 访问权限访问dynamicEntity["new_property3"]
,则会创建该属性(如果该属性不存在)或覆盖现有值。