/// <summary> /// 当静态服务被释放时 /// </summary> /// <param name="bindData">绑定数据</param> /// <param name="action">处理事件</param> /// <returns>服务绑定数据</returns> public static IBindData OnRelease(this IBindData bindData, Action action) { Guard.Requires <ArgumentNullException>(action != null); return(bindData.OnRelease((_, __) => { action(); })); }
/// <summary> /// 当静态服务被释放时 /// </summary> /// <param name="bindData">绑定数据</param> /// <param name="action">处理事件</param> /// <returns>服务绑定数据</returns> public static IBindData OnRelease(this IBindData bindData, Action <object> action) { Guard.Requires <ArgumentNullException>(action != null); return(bindData.OnRelease((_, instance) => { action(instance); })); }
/// <inheritdoc cref="IBindData.OnRelease"/> public static IBindData OnRelease(this IBindData bindData, Action closure) { Guard.Requires <ArgumentNullException>(closure != null); return(bindData.OnRelease((_, __) => { closure(); })); }
/// <summary> /// 重新绑定 /// </summary> /// <param name="newBinder">新的Binder</param> private static void Rebind(IBindData newBinder) { if (newBinder != null && binder != newBinder && newBinder.IsStatic) { newBinder.OnRelease(OnRelease); } binder = newBinder; }
/// <summary> /// 当静态服务被释放时 /// </summary> /// <param name="bindData">绑定数据</param> /// <param name="closure">处理事件</param> /// <returns>服务绑定数据</returns> public static IBindData OnRelease <T>(this IBindData bindData, Action <IBindData, T> closure) { Guard.Requires <ArgumentNullException>(closure != null); return(bindData.OnRelease((bind, instance) => { if (instance is T) { closure(bind, (T)instance); } })); }