1

我正在编写一个插件,它基本上将执行相同的功能 - 例如,在状态更改时创建一个任务。该功能需要发生在 2 个实体上。

除了设置实体类型字段(选项集)之外,每个步骤都完全相同。这设置为EntityAEntityB取决于哪个实体触发了插件。

我现有的代码执行以下操作

new_entitya entityA = (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity && context.PrimaryEntityName == "new_entitya")
                                    ? ((Entity)context.InputParameters["Target"]).ToEntity<new_entitya>()
                                    : null;

现在,有没有办法可以根据 PrimaryEntityName 的值设置 .ToEntity 调用的值,而不是编写 new_entitya 或 new_entityb?

4

2 回答 2

2

为什么要投?您只需检查实体名称并应用您需要的任何属性。

var newTask = new Entity("Task");
newTask.Attributes.Add("subject", "foo");
// etc etc for other common properties
if (context.PrimaryEntityName.Equals("new_entitya"))
{
    newTask.Attributes.Add("new_optionset", valueA);
}
else
{
    newTask.Attributes.Add("new_optionset", valueB);
}

我想缺点是您必须维护插件中的选项集值,但如果它只是两个值,似乎不会有很大的开销。

于 2013-04-26T21:45:16.380 回答
0

参考这篇文章。基本上,您必须根据传入的类型动态构建一个通用方法。

于 2013-04-26T17:56:27.413 回答