/// <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; }