/// <summary>
        /// 创建层叠选择器
        /// </summary>
        /// <param name="relativeSelector">前置关系选择器</param>
        /// <param name="selector">右选择器</param>
        /// <returns></returns>
        public static ISelector Create(CssRelativeSelector relativeSelector, ISelector selector)
        {
            if (relativeSelector == null)
            {
                throw new ArgumentNullException("relativeSelector");
            }

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


            var elementSelector = selector as CssElementSelector;

            if (elementSelector != null)
            {
                return(new CssCasecadingSelector(relativeSelector, elementSelector));
            }

            var casecadingSelector = selector as CssCasecadingSelector;

            if (casecadingSelector != null)
            {
                return(Combine(relativeSelector, casecadingSelector));
            }

            var multipleSelector = selector as CssMultipleSelector;

            if (multipleSelector != null)
            {
                return(CssMultipleSelector.Combine(relativeSelector, multipleSelector));
            }


            throw new NotSupportedException();
        }
 public static ISelector Combine( CssRelativeSelector relativeSelector, CssMultipleSelector multipleSelector )
 {
     return new CssMultipleSelector( multipleSelector._selectors.Select( selector => CssCasecadingSelector.Create( relativeSelector, selector ) ).ToArray() );
 }
 public static ISelector Combine(CssRelativeSelector relativeSelector, CssMultipleSelector multipleSelector)
 {
     return(new CssMultipleSelector(multipleSelector._selectors.Select(selector => CssCasecadingSelector.Create(relativeSelector, selector)).ToArray()));
 }