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);
        }
Пример #3
0
        public IObjectGraphNode BuildObjectGraph(Type type, string nodeName)
        {
            IObjectGrapher objectGrapher = ObjectGraphers.GetApplicableObjectGrapher(type);

            return(objectGrapher?.BuildObjectGraph(type, nodeName));
        }
Пример #4
0
 public void TestInitialize()
 {
     _objectGrapher = new GuardianObjectGrapher();
 }