Exemple #1
0
 internal void SetUp(BaseAttribute createdBy, ModuleContext ctx, ResolveHelper resHelp, ILogProvider logger)
 {
     this.logger    = logger;
     this.ctx       = ctx;
     this.createdBy = createdBy;
     this.resHelper = resHelp;
 }
Exemple #2
0
            public object Resolve(Type serviceType)
            {
                if (_scopeObjects.TryGetValue(serviceType, out var obj))
                {
                    return(obj);
                }

                using var scope = new ResolveLoopScope();
                obj             = ResolveHelper.Resolve(this, serviceType, out Lifetime lifetime);

                if (lifetime == Lifetime.Scoped)
                {
                    _scopeObjects.TryAdd(serviceType, obj);
                }

                if (obj is IDisposable dispObj)
                {
                    if (lifetime != Lifetime.Singleton)
                    {
                        _dispObjects.Add(dispObj);
                    }
                    else if (_root is Container container)
                    {
                        container.TryAddDisposableObject(dispObj);
                    }
                }

                return(obj);
            }
Exemple #3
0
        /// <summary>
        /// 解析出类型 <paramref name="serviceType"/> 的实例。
        /// </summary>
        /// <param name="serviceType">服务类型。</param>
        /// <returns>类型的实例对象。如果没有注册,则为 null。</returns>
        public object Resolve(Type serviceType)
        {
            using var scope = new ResolveLoopScope();
            var obj = ResolveHelper.Resolve(this, serviceType, out Lifetime lifetime);

            if (lifetime == Lifetime.Singleton && obj is IDisposable dispObj)
            {
                TryAddDisposableObject(dispObj);
            }

            return(obj);
        }
Exemple #4
0
        private void HandleIgnoreStatCommand(ChatCommand command)
        {
            if (command.ChatMessage.Username.ToLower() != "zakamurite")
            {
                return;
            }

            if (command.ArgumentsAsList.Count < 1)
            {
                ListIgnoreStats();
                return;
            }

            var nameOrId  = command.ArgumentsAsList[0];
            var userInfos = _resolveHelper.Resolve(nameOrId);

            if (userInfos.Count == 0)
            {
                SendMessage($"User {nameOrId} not found");
                return;
            }
            else if (userInfos.Count > 1)
            {
                SendMessage($"User {nameOrId} resolves in more than 1 entities, try specifying id instead: " +
                            string.Join(", ", userInfos.Select(_ => _.ToString())));
                return;
            }

            if (command.ArgumentsAsList.Count == 1)
            {
                ResolveHelper.AddIgnoreUserStat(userInfos[0]);
                SendMessage($"Added user '{userInfos[0].ToString()}' to ignore stat list");
            }
            else
            {
                ResolveHelper.RemoveIgnoreUserStat(userInfos[0]);
                SendMessage($"Removed user '{userInfos[0].ToString()}' from ignore stat list");
            }
        }
        public AbstractCommandHandler(BotSettings settings)
        {
            this._settings = settings;

            this._resolveHelper = new ResolveHelper();
        }