internal void SetUp(BaseAttribute createdBy, ModuleContext ctx, ResolveHelper resHelp, ILogProvider logger) { this.logger = logger; this.ctx = ctx; this.createdBy = createdBy; this.resHelper = resHelp; }
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); }
/// <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); }
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(); }