void RecursiveCreateProperties(SF.Tong.Schema.NodeTypeInfo nodeDef, Dictionary <string, SF.Tong.Schema.Property> properties) { if (!string.IsNullOrEmpty(nodeDef.Base)) { SF.Tong.Schema.NodeTypeInfo parentNodeDef = nodeDef.Parent; if (parentNodeDef != null) { // TODO : maybe parent domnode type would be better? RecursiveCreateProperties(parentNodeDef, properties); } else { Outputs.Write(OutputMessageType.Error, "Can't find base node definition: {0} parent of {1}", nodeDef.Base, nodeDef.Name); } } if (nodeDef.Property != null) { foreach (var prop in nodeDef.Property) { if (properties.ContainsKey(prop.Name)) { // This is DFS travel. Child most property definition will be taken. // override properties[prop.Name] = prop; } else { properties.Add(prop.Name, prop); } } } }