Plugins 什么时候可以用“Target”代替实体?在处理单个实体类型时,是否应该检查其逻辑名称?

Plugins 什么时候可以用“Target”代替实体?在处理单个实体类型时,是否应该检查其逻辑名称?,plugins,dynamics-crm,crm,Plugins,Dynamics Crm,Crm,我是CRM开发的新手,所以我想弄清楚一些事情。首先,你需要知道为什么你要做某件事才能完全理解它。那么让我们来回答这个问题 我知道制作插件时必须这样做: var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); if (context.InputParameters.Contains("Target") && context.InputPar

我是CRM开发的新手,所以我想弄清楚一些事情。首先,你需要知道为什么你要做某件事才能完全理解它。那么让我们来回答这个问题

我知道制作插件时必须这样做:

var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
if (context.InputParameters.Contains("Target") && context.InputParameters.["Target"] is Entity)
{
     var entity = (Entity)context.InputParameters["Target"];
     if(entity.LogicalName == "myEntity")
     {
         //Do something with your entity
     }
}
现在,在PluginRegistration工具中,您可以设置您的插件将在定义的消息上被触发,以及来自它们的哪些实体和特定属性将受到它的影响,以及其他内容

我可以看出,当使用单个插件操作多个实体时,验证非常有用

现在,假设您只使用插件更新单个实体。为什么我要检查目标实体是否是我想要处理的实体,如果我已经知道,因为我特别为该实体设置了它?在该场景中,实体可以是什么

此外,在什么情况下,目标不是当前上下文中的实体

提前感谢,如果这是一个愚蠢的问题,请道歉。

请参阅以下答案:

根据SDK:

请注意,并非所有请求都包含类型为的目标属性 实体,所以您必须查看每个请求或响应。例如 具有目标属性,但其类型为

底线是,您需要查看OrganizationRequest上的request all plugin的fire,其中有许多派生类型,以确定目标属性的类型。

请参见以下答案:

根据SDK:

请注意,并非所有请求都包含类型为的目标属性 实体,所以您必须查看每个请求或响应。例如 具有目标属性,但其类型为

底线是,您需要查看OrganizationRequest上所有插件发出的请求,其中有许多派生类型,以确定目标属性的类型。

正如Nicknow所说,请求将根据执行的消息而变化

您可以从MSDN获得该信息。每个请求都会在Properties部分下列出输入参数,例如或使用

还有一种非常好的替代方法,可以通过一种类型安全的方法来处理这个问题,intellisense包含在下面的博客文章中:。

正如Nicknow所说,将根据正在执行的消息而改变

您可以从MSDN获得该信息。每个请求都会在Properties部分下列出输入参数,例如或使用


还有一个非常好的替代方法,可以用类型安全的方法处理这个问题,intellisense包含在下面的博客文章中:。

这对我来说很清楚。非常感谢您的回复这对我来说很清楚。非常感谢您的回复美好的谢谢你的解释和更多信息的链接:很好。感谢您的解释和更多信息的链接: