Пример #1
0
 //============================================================
 // <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);
                 }
             }
         }
     }
 }
Пример #2
0
 //============================================================
 // <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);
             }
         }
     }
 }
Пример #3
0
        //============================================================
        // <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));
        }