前言
在实施 Dynamics 365 项目时,编写插件是扩展功能和满足定制需求的常用方法。如果有多个开发人员在同一个项目上写插件,那么插件注释是必不可少的。正确注释可以帮助其他人更好地理解代码的目的和功能。下面是我常用的 Dynamics 365 插件的注释模板,以及一些示例代码。
这是我的常用模板,如果有任何不成熟之处,欢迎讨论指正。
/// <summary>
/// <list type="bullet">
/// <item>模块:售前(示例)</item>
/// <item>功能</item>
/// <list type="number">
/// <item>功能描述 xxxx xxxx xxxx</item>
/// <item>功能描述 xxxx xxxx xxxx</item>
/// </list>
/// <item>Primary Entity: Lead</item>
/// <item>Message: Update</item>
/// <item>Update Attributes: qualifyingopportunityid, statecode</item>
/// <item>State: PostOperation</item>
/// <item>Mode: Synchronous</item>
/// </list>
/// </summary>
Message/State/Mode Options
Message
Options- Create
- Update
- Delete
- Associate
- Disassociate
- SetStateDynamicEntity
- RetrieveMultiple
- Retrieve
- QualifyLead
- Assign
State
Options- Pre-validation
- Pre-operation
- Post-operation
Mode
Options- Synchronous
- Asynchronous
Example
using Microsoft.Xrm.Sdk;
using System;
namespace Blog.D365.Plugins.Account
{
/// <summary>
/// <list type="bullet">
/// <item>模块:售前(示例)</item>
/// <item>功能</item>
/// <list type="number">
/// <item>功能描述 xxxx xxxx xxxx</item>
/// <item>功能描述 xxxx xxxx xxxx</item>
/// </list>
/// <item>Primary Entity: Lead</item>
/// <item>Message: Update</item>
/// <item>Update Attributes: qualifyingopportunityid, statecode</item>
/// <item>State: PostOperation</item>
/// <item>Mode: Synchronous</item>
/// </list>
/// </summary>
public class AccountPostUpdate : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
try
{
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = factory.CreateOrganizationService(context.UserId);
IOrganizationService serviceAdmin = factory.CreateOrganizationService(null);
Entity currentEntity = (Entity)context.InputParameters["Target"];
}
}
catch (Exception ex)
{
tracer.Trace($"AccountPostUpdate unexpected exception:\n{ex.Message}");
throw;
}
}
}
}
评论