/// <summary>
        /// 返回指定容器中的 object 是否已经存在
        /// </summary>
        public static bool IsExistOnContainer(object obj, IInjectionContainer container)
        {
            var isExist  = false;
            var bindings = container.GetTypes(obj.GetType());

            if (bindings == null)
            {
                return(false);
            }

            for (var i = 0; i < bindings.Count; i++)
            {
                int length = bindings[i].valueList.Count;
                for (int n = 0; n < length; n++)
                {
                    if (bindings[i].valueList[n] == obj)
                    {
                        isExist = true;
                        return(isExist);
                    }
                }
            }

            return(isExist);
        }
        /// <summary>
        /// 注册容器
        /// </summary>
        public void OnRegister(IInjectionContainer container)
        {
            // 将容器添加到 IDisposable list.
            disposable.Add(container);

            // 如果容器中含有 ICommandDispatcher 类型的 binding,且它实现了 IDisposable 接口
            // 就获取它的 ICommandDispatcher 类型实例并将其也添加到 IDisposable list
            var commandDispatches = container.GetTypes <ICommandDispatcher>();

            if (commandDispatches != null && commandDispatches.Count != 0)
            {
                var dispatcher = container.Resolve <ICommandDispatcher>();
                if (dispatcher is IDisposable)
                {
                    disposable.Add((IDisposable)dispatcher);
                }
            }

            // 添加 AOT 委托
            container.afterAddBinding  += this.OnAfterAddBinding;
            container.afterInstantiate += this.OnBindingResolution;
        }