Example #1
0
        internal Route(Component routeOutComponent, TRouteOut routeOut, Component routeInComponent, TRouteIn routeIn, RouteConverter routeConverter)
        {
            if (routeOutComponent == null)
            {
                throw new ArgumentNullException("routeOutComponent");
            }

            if (routeOut == null)
            {
                throw new ArgumentNullException("routeOut");
            }

            if (routeInComponent == null)
            {
                throw new ArgumentNullException("routeInComponent");
            }

            if (routeIn == null)
            {
                throw new ArgumentNullException("routeIn");
            }

            this._routeConverter    = routeConverter;
            this._routeIn           = routeIn;
            this._routeInComponent  = routeInComponent;
            this._routeOut          = routeOut;
            this._routeOutComponent = routeOutComponent;
        }
Example #2
0
        public static PropertyToMethodRoute Create <TRouteOutType, TRouteInType>(Component routeOutComponent, Expression <Func <Component, TRouteOutType> > propertyExpresson, Component routeInComponent, Expression <Action <TRouteInType> > methodExpression, RouteConverter routeConverter)
        {
            MemberExpression     memberExpression     = null;
            MethodCallExpression methodCallExpression = null;

            if (propertyExpresson == null)
            {
                throw new ArgumentNullException("propertyExpression");
            }

            if (methodExpression == null)
            {
                throw new ArgumentNullException("methodExpression");
            }

            memberExpression     = propertyExpresson.Body as MemberExpression;
            methodCallExpression = methodExpression.Body as MethodCallExpression;

            if (memberExpression == null)
            {
                throw new ArgumentException("The property expression is not valid. Could not get MemberExpression.", "propertyExpression");
            }

            if (methodCallExpression == null)
            {
                throw new ArgumentException("The method expression is not valid. Could not get MethodCallExpression.", "methodExpression");
            }

            if (memberExpression.Member.MemberType != MemberTypes.Property)
            {
                throw new ArgumentException(string.Format(System.Globalization.CultureInfo.CurrentCulture, "The propertyExpression is not a valid type. Type found: {0}.", memberExpression.Member.MemberType), "propertyExpression");
            }

            if (methodCallExpression.Method.MemberType != MemberTypes.Method)
            {
                throw new ArgumentException(string.Format(System.Globalization.CultureInfo.CurrentCulture, "The methodExpression is not a valid type. Type found: {0}.", methodCallExpression.Method.MemberType), "methodExpression");
            }

            return(new PropertyToMethodRoute(routeOutComponent, memberExpression.Member.Name, routeInComponent, methodCallExpression.Method.Name, routeConverter));
        }
Example #3
0
        private PropertyToMethodRoute(Component routeOutComponent, string propertyOutName, Component routeInComponent, string methodName, RouteConverter routeConverter) : base(routeOutComponent, propertyOutName, routeInComponent, methodName, routeConverter)
        {
            if (string.IsNullOrWhiteSpace(propertyOutName))
            {
                throw new ArgumentNullException("propertyOutName");
            }

            if (string.IsNullOrWhiteSpace(methodName))
            {
                throw new ArgumentNullException("methodName");
            }

            this._propertyOutInfo = this.RouteOutComponent.GetType().GetProperty(this.RouteOut, BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static).GetGetMethod();
            this._methodInfo      = this.RouteInComponent.GetType().GetMethod(this.RouteIn, BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static);

            if (this._propertyOutInfo == null)
            {
                throw new ArgumentException("The property could not be found.", "propertyOutName");
            }

            if (this._methodInfo == null)
            {
                throw new ArgumentException("The in method could not be found.", "methodName");
            }

            this._routeInType  = this._methodInfo.GetParameters()[0].ParameterType;
            this._routeOutType = this._propertyOutInfo.ReturnType;
        }
Example #4
0
        public static PropertyToPropertyRoute Create <TRouteType>(Component routeOutComponent, string propertyName, Component routeInComponent, Expression <Func <Component, TRouteType> > propertyInExpresson, RouteConverter routeConverter)
        {
            MemberExpression memberInExpression = null;

            if (string.IsNullOrWhiteSpace(propertyName))
            {
                throw new ArgumentNullException("propertyName");
            }

            if (propertyInExpresson == null)
            {
                throw new ArgumentNullException("propertyInExpression");
            }

            memberInExpression = propertyInExpresson.Body as MemberExpression;

            if (memberInExpression == null)
            {
                throw new ArgumentException("The property expression is not valid. Could not get MemberExpression.", "propertyInExpression");
            }

            if (memberInExpression.Member.MemberType != MemberTypes.Property)
            {
                throw new ArgumentException(string.Format(System.Globalization.CultureInfo.CurrentCulture, "The propertyInExpression is not a valid type. Type found: {0}.", memberInExpression.Member.MemberType), "propertyInExpression");
            }

            return(new PropertyToPropertyRoute(routeOutComponent, propertyName, routeInComponent, memberInExpression.Member.Name, routeConverter));
        }
Example #5
0
 internal EventRoute(Component routeOutComponent, string eventName, Component routeInComponent, string handlerName, RouteConverter routeConverter) : base(routeOutComponent, eventName, routeInComponent, handlerName, routeConverter)
 {
 }
Example #6
0
        public static EventToMethodRoute Create <TRouteType>(Component routeOutComponent, EventInfo eventInfo, Component routeInComponent, Expression <Action <TRouteType> > methodExpression, RouteConverter routeConverter)
        {
            if (eventInfo == null)
            {
                throw new ArgumentNullException("eventInfo");
            }

            return(EventToMethodRoute.Create(routeOutComponent, eventInfo.Name, routeInComponent, methodExpression, routeConverter));
        }
Example #7
0
        private EventToMethodRoute(Component routeOutComponent, string eventName, Component routeInComponent, string methodName, RouteConverter routeConverter) : base(routeOutComponent, eventName, routeInComponent, methodName, routeConverter)
        {
            if (string.IsNullOrWhiteSpace(eventName))
            {
                throw new ArgumentNullException("eventName");
            }

            if (string.IsNullOrWhiteSpace(methodName))
            {
                throw new ArgumentNullException("methodName");
            }

            this._eventInfo  = this.RouteOutComponent.GetType().GetEvent(this.RouteOut, BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static);
            this._methodInfo = this.RouteInComponent.GetType().GetMethod(this.RouteIn, BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static);

            if (this._eventInfo == null)
            {
                throw new ArgumentException("The event could not be found.", "eventName");
            }

            if (this._methodInfo == null)
            {
                throw new ArgumentException("The method could not be found.", "methodName");
            }

            this._routeInType  = this._methodInfo.GetParameters()[0].ParameterType;
            this._routeOutType = this._eventInfo.EventHandlerType.GetMethod("Invoke").GetParameters()[1].ParameterType;
        }
Example #8
0
        public static EventToPropertyRoute Create <TRouteType>(Component routeOutComponent, string eventName, Component routeInComponent, Expression <Func <Component, TRouteType> > propertyExpression, RouteConverter routeConverter)
        {
            MemberExpression propertyMember = null;

            if (propertyExpression == null)
            {
                throw new ArgumentNullException("propertyExpression");
            }

            propertyMember = propertyExpression.Body as MemberExpression;

            if (propertyMember == null)
            {
                throw new ArgumentException("The property expression is not valid. Could not get MemberExpression.", "propertyExpression");
            }

            if (propertyMember.Member.MemberType != MemberTypes.Property)
            {
                throw new ArgumentException(string.Format(System.Globalization.CultureInfo.CurrentCulture, "The propertyExpression is not a valid type. Type found: {0}.", propertyMember.Member.MemberType), "propertyExpression");
            }

            return(new EventToPropertyRoute(routeOutComponent, eventName, routeInComponent, propertyMember.Member.Name, routeConverter));
        }
Example #9
0
        public static EventToPropertyRoute Create <TRouteType>(Component routeOutComponent, EventInfo eventInfo, Component routeInComponent, Expression <Func <Component, TRouteType> > propertyExpression, RouteConverter routeConverter)
        {
            if (eventInfo == null)
            {
                throw new ArgumentNullException("eventInfo");
            }

            return(EventToPropertyRoute.Create(routeOutComponent, eventInfo.Name, routeInComponent, propertyExpression, routeConverter));
        }
Example #10
0
 internal PropertyRoute(Component routeOutComponent, string propertyName, Component routeInComponent, string handlerName, RouteConverter routeConverter) : base(routeOutComponent, propertyName, routeInComponent, handlerName, routeConverter)
 {
 }