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); }
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); }