示例#1
0
        public static Include <T> AppendLeafs <T>(this Include <T> source, Func <ChainNode, IEnumerable <MemberInfo> > leafRule = null)
        {
            var parser = new ChainVisitor <T>();
            var train  = new Chain <T>(parser);

            source.Invoke(train);
            var root = parser.Root;

            root.AppendLeafs(leafRule);
            var destination = root.ComposeInclude <T>();

            return(destination);
        }
示例#2
0
        public static ChainNode CreateChainNode <T>(this Include <T> include)
        {
            if (include == null)
            {
                return(new ChainNode(typeof(T)));
            }
            var visitor = new ChainVisitor <T>();
            var chain   = new Chain <T>(visitor);

            include.Invoke(chain);
            var rootNode = visitor.Root;

            return(rootNode);
        }