随笔 - 547  文章 - 213 评论 - 417 阅读 - 107万


WeblogBaseTemplatedWebControl类的源代码

类图:





1.  CurrentUser属性

        private User _currentUser = null;

        
/// <summary>
        
/// The Current User Accessing the blog/data
        
/// </summary>
        protected User CurrentUser
        {
            
get{return _currentUser;}
        } 

通过定义一个属性,来获得当前登录blog的用户信息。该属性为保护成员,只能被该类的子类使用。
用户信息放在一个User类中.所以WeblogBaseTemplatedWebControl类依赖于User类,如下图所示:


可不要小看这个User类,它可是一个庞大的类,包含了很多用户的信息,这个类将在另外一篇文章中专门进行讨论

2. 构造函数:
        public WeblogBaseTemplatedWebControl():base()
        {
              _currentUser 
= CSContext.Current.User;
        }


在构造函数里对User对象赋值
这里用到了一个类CSContext:


CSContext是用来存储一次Request的相关数据的类,也是一个很大的类,这个类将在另外一篇文章中进行讨论。
问题:CSContext什么时候被赋值的?



3. ExternalSkinFileName属性

        /// <summary>
        
/// Set Blogs as the directory for all Blog Controls
        
/// </summary>
        protected override String ExternalSkinFileName
        {
            
get
            {
                
if (!Globals.IsNullorEmpty(SkinName))
                    
return CreateExternalSkinFileName("Blogs", SkinName); 
                
return CreateExternalSkinFileName("Blogs");
            }
        }

这个属性是根据基类的SkinName属性产生完整的皮肤用户控件的路径,
调用的基类方法如下:
        protected virtual string CreateExternalSkinFileName(string path)
        {
            
return CreateExternalSkinFileName(path, "Skin-" + this.GetType().Name);
        }

        
protected virtual string CreateExternalSkinFileName(string path, string name)
        {
            
if(path != null && !path.EndsWith("/"))
                path 
= path + "/";

            
return string.Format("{0}{1}.ascx",path,name);
        }


 
posted on   今夜太冷  阅读(230)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示