private static WeakListenerInternal CreateWeakListener(object target, object state) { var eventInfo = (EventInfo)state; var listenerInternal = new WeakListenerInternal(target, eventInfo); listenerInternal.Handler = eventInfo.EventHandlerType == typeof(EventHandler) ? new EventHandler(listenerInternal.Raise) : ServiceProvider.ReflectionManager.TryCreateDelegate(eventInfo.EventHandlerType, listenerInternal, WeakListenerInternal.HandleMethod); if (listenerInternal.Handler == null) { return(WeakListenerInternal.EmptyListener); } #if PCL_WINRT var addMethod = eventInfo.AddMethod; #else var addMethod = eventInfo.GetAddMethod(true); #endif if (addMethod == null) { return(WeakListenerInternal.EmptyListener); } listenerInternal.RegToken = addMethod.InvokeEx(target, listenerInternal.Handler); return(listenerInternal); }
static WeakListenerInternal() { Empty = new WeakEventListenerWrapper[0]; AddSourceEventDelegate = AddSourceEvent; UpdateSourceEventDelegate = UpdateSourceEvent; HandleMethod = typeof(WeakListenerInternal).GetMethodEx("Raise", MemberFlags.Public | MemberFlags.Instance); EmptyListener = new WeakListenerInternal(); }
private static WeakListenerInternal CreateContextListener(object src, object state) { var listenerInternal = new WeakListenerInternal(src, null); var handler = new EventHandler <ISourceValue, EventArgs>(listenerInternal.Raise); listenerInternal.Handler = handler; BindingServiceProvider.ContextManager.GetBindingContext(src).ValueChanged += handler; return(listenerInternal); }
private static WeakListenerInternal CreateContextListener(object src, object state) { var context = (IBindingContext)state; var listenerInternal = new WeakListenerInternal(src, null); var handler = new EventHandler <ISourceValue, EventArgs>(listenerInternal.Raise); listenerInternal.Handler = handler; context.ValueChanged += handler; return(listenerInternal); }
private static WeakListenerInternal CreateWeakListener(object target, object state) { var eventInfo = (EventInfo)state; var listenerInternal = new WeakListenerInternal(target, eventInfo); listenerInternal.Handler = eventInfo.EventHandlerType == typeof(EventHandler) ? new EventHandler(listenerInternal.Raise) : ServiceProvider.ReflectionManager.TryCreateDelegate(eventInfo.EventHandlerType, listenerInternal, WeakListenerInternal.HandleMethod); if (listenerInternal.Handler == null) return WeakListenerInternal.EmptyListener; #if PCL_WINRT var addMethod = eventInfo.AddMethod; #else var addMethod = eventInfo.GetAddMethod(true); #endif if (addMethod == null) return WeakListenerInternal.EmptyListener; listenerInternal.RegToken = addMethod.InvokeEx(target, listenerInternal.Handler); return listenerInternal; }
private static WeakListenerInternal CreateContextListener(object src, object state) { var context = (IBindingContext)state; var listenerInternal = new WeakListenerInternal(src, null); var handler = new EventHandler<ISourceValue, EventArgs>(listenerInternal.Raise); listenerInternal.Handler = handler; context.ValueChanged += handler; return listenerInternal; }
private static WeakListenerInternal UpdateSourceEvent(object source, Func<object, object, WeakListenerInternal> addValue, WeakListenerInternal currentValue, object state) { var array = (object[])state; var weakItem = (WeakEventListenerWrapper)array[1]; array[2] = currentValue.AddInternal(weakItem, true); return currentValue; }
private static WeakListenerInternal UpdateSourceEvent(object source, Func <object, object, WeakListenerInternal> addValue, WeakListenerInternal currentValue, object state) { var array = (object[])state; var weakItem = (WeakEventListenerWrapper)array[1]; array[2] = currentValue.AddInternal(weakItem, true); return(currentValue); }