Dynamics crm 如何知道在Dynamics CRM插件上下文中哪些InputParameters值是可能的?
我试图从中理解插件示例。 有这样一个条件:Dynamics crm 如何知道在Dynamics CRM插件上下文中哪些InputParameters值是可能的?,dynamics-crm,dynamics-crm-online,dynamics-crm-2016,Dynamics Crm,Dynamics Crm Online,Dynamics Crm 2016,我试图从中理解插件示例。 有这样一个条件: // The InputParameters collection contains all the data passed in the message request. if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) 总
// The InputParameters collection contains all the data passed in the message request.
if (context.InputParameters.Contains("Target") &&
context.InputParameters["Target"] is Entity)
总的来说,不仅仅是关于这个样本,我应该根据什么先验知识来决定访问特定的财产?我怎么知道测试InputParameters
是否包含“Target”
键(我想我不应该猜到它)
我凭什么知道要问“Target”
映射值是否为实体类型,而不是其他类型
我找到了两年前的帖子,我找到了一个网页,上面写着(重点是我的):
在插件中,context.InputParameters和
context.OutputParameters取决于消息和您选择的阶段
在上注册插件。例如,“Target”出现在
用于创建和更新消息的InputParameters,但不用于
设置状态消息。此外,OutputParameters仅存在于后期,
而不是在前期阶段没有单一的文档来源
它提供了一整套InputParameters和OutputParameters
按消息和阶段
从我的搜索中,一个单一的来源仍然不存在,但也许可以使用Dynamics Online平台在设置菜单的深处找到可能的值,也许?任何源代码都很好。这样做的最佳实践是使用强类型方法。例如,如果您想知道CreateRequest上有哪些属性可用,您可以执行以下操作:
var createReq = new CreateRequest() { Parameters = context.InputParameters };
createReq.Target; // Has type Entity
请看解释此方法的完整博客帖子:
原始答复:
这取决于我们讨论的是哪一个请求。请参阅MSDN上的
作为一个例子,看一下CreateRequest。财产之一
CreateRequest命名为Target,类型为Entity。这是
平台当前正在操作的实体。访问
您将使用名称“Target”作为
输入参数集合。您还需要对返回的
例如
请注意,并非所有请求都包含类型为的目标属性
实体,所以您必须查看每个请求或响应。例如
DeleteRequest具有目标属性,但其类型为EntityReference
总结:看看实际的请求,例如。在2011年,有人根据消息类型实际生成了类型化属性。有点整洁:
这将显示您希望每条消息都有参数。我知道这是一个已经回答过的“老”问题,但我认为这可能会有所帮助。我已经构建了一个小网页,其中包含所有带有所有输入/输出参数的消息。您可以从以下位置访问它:
那么,如果“Target”
是CreateRequest
的唯一相关属性(即持有对实体的引用),那么为什么需要if
条件呢?如果省略它会发生什么?我看不出需要if(context.InputParameters.Contains(“目标”)部分。CreateRequest应该始终在其InputParameters中包含目标。我认为if(context.InputParameters.Contains(“目标”)部分
部分是为了防止在为多个请求类型注册相同的代码时出错。例如,如果您在检索和创建上注册插件,但希望发生不同的事情,您可以(潜在地)为这两个操作编写一个插件谢谢,那太好了。如果我们能将此应用于Dynamics 2016……几乎没有什么变化@Helterskeleter,如果你有一个prem版本,你可以运行相同的SQL脚本生成2016版本。我知道,但我有在线版本。我知道我有点晚了,但我做到了:@Fede那真是太好了!