代码改变世界

asp.net控件开发技巧(2)关闭基类不必要的功能

  Clingingboy  阅读(1860)  评论(2编辑  收藏  举报

 1.关闭容器

Control类有Controls集合属性,即继承Control类的控件都是一个容器控件,asp.net控件内置的有PlaceHolder控件,其只继承自Control类,什么也没做。但所有控件都是继承自Control类的。如一个label控件,照样可以当容器使用.

label1.Controls.add(control)

有些控件则不需要这个功能,如Literal控件,只输出纯文字,不允许添加子控件



很简单,重写CreateControlCollection方法,返回EmptyControlCollection空集合

   protected override ControlCollection CreateControlCollection()
    
{
        
return new EmptyControlCollection(this);
    }


2.禁用属性

如SqlDataSourceControl控件,其继承自DataSourceControl,DataSourceControl类则继承自Control类,DataSourceControl 不需要呈现东西,自然不需要样式,所以像SkinIDEnableTheming等属性则不需要使用。同时也可以用new关键字和一些元数据禁用掉像WebControl类的一些公共属性。有时候你确实不需要这些东西,或者是将这些属性给子标签用也可以。

        /// <exclude/>
        
/// <excludetoc/>

        [Bindable(false), Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
        
new public System.Drawing.Color BorderColor
        
{
            
get
            
{
                
return new System.Drawing.Color();
            }

        }

总结:有时候继承下来的并不是你所需要的,所以灵活的重写基类的方法和属性是非常有必要的,而且有时候还必须这么做
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示