类多了,看都看晕了.本着职责明确的思想,在n个类的配合下,我们终于得到了我们想要的结果.有时候还真是烦

我本意是不想看配置文件如何读取的,但我就不知不觉的遇到这个问题了,只有耐着性子看了.在此我们只先需要明白,他该做什么,不该做什么就可以了

CSConfiguration负责读取配置文件

下面是我遇到的经历

当我想看看如何获取SiteUrls.config的数据时,我就是找不到读取这个路径的url,且看SiteUrls的Instance方法

path为载入的SiteUrls.config配置文件

cs配置文件的获取string path = csContext.PhysicalPath(siteUrlProvider.Attributes["path"]);
cs配置文件的获取                    
string overridePath = csContext.PhysicalPath(siteUrlProvider.Attributes["overridePath"]);
cs配置文件的获取                    Type type 
= Type.GetType(siteUrlProvider.Type);
cs配置文件的获取
cs配置文件的获取                    XmlDocument doc 
= null;
cs配置文件的获取                    
cs配置文件的获取                    
if(File.Exists(overridePath))
                    }

于是我找到了Provider类


cs配置文件的获取                    CSConfiguration config 
= CSConfiguration.GetConfig();
cs配置文件的获取                    
cs配置文件的获取                    Provider siteUrlProvider 
= config.Providers["SiteUrlsDataProvider"as Provider;

继续看CSConfiguration的Providers,其为一个哈希表,我们还不知道如何获取,CSConfiguration让我们看到了唯一的操作就是GetConfig

 }


让我们再看GetConfig方法,下面的代码有点眉目了,我们终于看到了communityserver.config配置文件,好象跟我们想要的SiteUrls没关系,我们只要一个SiteUrls的路径而已.
cs配置文件的获取string path = null;
cs配置文件的获取                
string overridePath = null;
cs配置文件的获取                XmlDocument doc 
= null;
cs配置文件的获取                HttpContext context 
= HttpContext.Current;
cs配置文件的获取                
if (context != null)
                }

再看下来,开始真正实例化了

cs配置文件的获取//实例化
cs配置文件的获取
                config = new CSConfiguration(doc);

接着我们去看构造函数干了什么

cs配置文件的获取        public CSConfiguration(XmlDocument doc)
        }

再看LoadValuesFromConfigurationXml方法,看来真正做事情的是他

看到这里

cs配置文件的获取foreach (XmlNode child in node.ChildNodes)
            }

打开配置文件看看发现以下节点

cs配置文件的获取                <add 
cs配置文件的获取                    
name = "SiteUrlsDataProvider" 
cs配置文件的获取                    type 
= "CommunityServer.Urls.UrlsData, CommunityServer.Urls" 
cs配置文件的获取                    path 
= "SiteUrls.config" 
cs配置文件的获取            overridePath 
="SiteUrls_override.config"
cs配置文件的获取                
/>

        }

好了,我们应该差不多搞明白了.其他的应该类似.慢慢的记录.

相关文章: