//============================================================ // <T>加载对象节点设置。</T> // // @param parent 父对象 // @param nodes 节点列表 //============================================================ protected virtual void LoadNodes(IXmlObject parent, FXmlNodes nodes) { if ((null != nodes) && !nodes.IsEmpty()) { foreach (FXmlNode node in nodes) { FXmlObjectConfig config = _configs[node.Name]; if (null != config) { // 创建实例 IXmlObject instance = config.CreateInstance <IXmlObject>(); _context._parent = parent; _context._config = node; instance.LoadConfig(_context); if (null != parent) { parent.Push(instance); } // 加载子节点 if (node.HasNode()) { LoadNodes(instance, node.Nodes); } } } } }
//============================================================ // <T>加载设置信息。</T> // // @param config 加载设置信息 //============================================================ public void LoadConfigNode(FXmlNode config) { if (config.HasNode()) { foreach (FXmlNode node in config.Nodes) { if (node.IsName(FXmlObjectConfig.TAG)) { FXmlObjectConfig nodeConfig = new FXmlObjectConfig(); nodeConfig.LoadConfig(node); _configs.Push(nodeConfig); } } } }
//============================================================ // <T>加载节点成为一个文档对象。</T> // // @param T 对象类型 // @param node 设置节点 // @return 文档对象 //============================================================ public T LoadNode <T>(FXmlNode node) where T : IXmlObject { FXmlObjectConfig config = _configs[node.Name]; if (null != config) { // 创建实例 T instance = config.CreateInstance <T>(); _context._parent = null; _context._config = node; instance.LoadConfig(_context); // 加载子节点 if (node.HasNode()) { LoadNodes(instance, node.Nodes); } return(instance); } return(default(T)); }