Td.Weixin.Public/Plugin/Invoker.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

/*******************************
 *	Author:	Dong[http://blog.tecd.pw] [mailto:techdong@hotmail.com] 欢迎交流 Q群:289147891
 *	Date:	2013-09-13 21:10:36
 *	Desc:	
 * 
*******************************/

using System;
using System.Collections.Generic;
using System.Linq;
using Td.Weixin.Public.Common;
using Td.Weixin.Public.Message;

namespace Td.Weixin.Public.Plugin
{
    /// <summary>
    /// 调用者,控制插件的执行。
    /// </summary>
    public class Invoker
    {
        private static readonly List<Plugin> Plugins = new List<Plugin>();

        /// <summary>
        /// 是否验证签名信息。
        /// 如果为true,签名失败时当不会执行插件.
        /// </summary>
        public static bool RequireCheck = true;

        /// <summary>
        /// 商家信息获取者。用于根据商家微信公号的openid获取商家信息。
        /// 如果平台有多个微信公号,必须实现此抽象类,否则不能获取到商家信息。
        /// </summary>
        public static SellerObtainer Obtainer { get; set; }

        /// <summary>
        /// 注册插件。
        /// <para>注册的插件则按顺序执行,直到找到第一个接受调用的Plugin。这意味着顺序很重要。</para>
        /// <para>同时,最后一个插件应该能处理所有调用,否则本次执行将无任何结果。</para>
        /// </summary>
        /// <param name="plugin"></param>
        /// <param name="index"></param>
        public static void RegisterPlugin(Plugin plugin, int? index = null)
        {
            if (plugin == null)
                throw new ArgumentNullException("plugin", "不能注册null插件");

            if (index.HasValue)
            {
                Plugins.Insert(index.Value, plugin);
            }
            else
            {
                Plugins.Add(plugin);
            }
        }

        /// <summary>
        /// 将调用转到合适的插件并由找到的插件执行处理。
        /// <para>如果没有任何插件接收此次调用,将返回null。</para>
        /// </summary>
后面还有 43 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。