public IObjectGraphNode BuildObjectGraph(Type type, string nodeName) { ComplexObjectGraphNode node = new ComplexObjectGraphNode() { NodeType = type, NodeName = nodeName }; if (_cachedNodes.ContainsKey(type)) { node.ChildrenObjectGraphNodes = _cachedNodes[type]; return(node); } Type genericType = type.GenericTypeArguments.SingleOrDefault(); IObjectGrapher objectGrapher = ObjectGraphers.GetApplicableObjectGrapher(genericType); IObjectGraphNode childNode = objectGrapher?.BuildObjectGraph(genericType, genericType.Name); node.ChildrenObjectGraphNodes.Add(childNode); _cachedNodes.Add(type, node.ChildrenObjectGraphNodes); return(node); }
public IObjectGraphNode BuildObjectGraph(Type type, string nodeName) { ComplexObjectGraphNode node = new ComplexObjectGraphNode() { NodeType = type, NodeName = nodeName }; if (_cachedNodes.ContainsKey(type)) { node.ChildrenObjectGraphNodes = _cachedNodes[type]; return(node); } PropertyInfo[] propertyInfos = type.GetProperties(); foreach (PropertyInfo propertyInfo in propertyInfos) { IObjectGrapher objectGrapher = ObjectGraphers.GetApplicableObjectGrapher(propertyInfo.PropertyType); IObjectGraphNode childNode = objectGrapher.BuildObjectGraph(propertyInfo.PropertyType, propertyInfo.Name); node.ChildrenObjectGraphNodes.Add(childNode); } _cachedNodes.Add(type, node.ChildrenObjectGraphNodes); return(node); }
public IObjectGraphNode BuildObjectGraph(Type type, string nodeName) { IObjectGrapher objectGrapher = ObjectGraphers.GetApplicableObjectGrapher(type); return(objectGrapher?.BuildObjectGraph(type, nodeName)); }
public void TestInitialize() { _objectGrapher = new GuardianObjectGrapher(); }