protected virtual bool TryCreateReflectionBasedBinding(object target, string targetName, out IMvxTargetBinding binding) { if (string.IsNullOrEmpty(targetName)) { MvxBindingTrace.Trace(MvxTraceLevel.Error, "Empty binding target passed to MvxTargetBindingFactoryRegistry"); binding = null; return false; } var targetPropertyInfo = target.GetType().GetProperty(targetName); if (targetPropertyInfo != null && targetPropertyInfo.CanWrite) { binding = new MvxWithEventPropertyInfoTargetBinding(target, targetPropertyInfo); return true; } var targetEventInfo = target.GetType().GetEvent(targetName); if (targetEventInfo != null) { // we only handle EventHandler's here // other event types will need to be handled by custom bindings if (targetEventInfo.EventHandlerType == typeof (EventHandler)) { binding = new MvxEventHandlerEventInfoTargetBinding(target, targetEventInfo); return true; } } binding = null; return false; }
protected virtual bool TryCreateReflectionBasedBinding(object target, string targetName, out IMvxTargetBinding binding) { if (string.IsNullOrEmpty(targetName)) { MvxBindingTrace.Trace(MvxTraceLevel.Error, "Empty binding target passed to MvxTargetBindingFactoryRegistry"); binding = null; return(false); } if (target == null) { // null passed in so return false - fixes #584 binding = null; return(false); } var targetPropertyInfo = target.GetType().GetProperty(targetName); if (targetPropertyInfo != null && targetPropertyInfo.CanWrite) { binding = new MvxWithEventPropertyInfoTargetBinding(target, targetPropertyInfo); return(true); } var targetEventInfo = target.GetType().GetEvent(targetName); if (targetEventInfo != null) { // we only handle EventHandler's here // other event types will need to be handled by custom bindings if (targetEventInfo.EventHandlerType == typeof(EventHandler)) { binding = new MvxEventHandlerEventInfoTargetBinding(target, targetEventInfo); return(true); } } binding = null; return(false); }