zoukankan      html  css  js  c++  java
  • 用属性实现按需查询

    各位,今天发现个代码中的下述Bug,以aspx程序为例,场景如下:
    在A.aspx的后台代码A.aspx.cs中定义下述属性:
    public IList<User> UserList
    {
    get;
    set;
    }
    然后有个方法:
    private void BindUserList(int groupId)
    {
    ... ...
    }
    在认为该初始化的地方调用此方法,如Page_Load或者某个Button的Click中;
     
    这样有个问题就是:如果某个地方的逻辑考虑不周,没有调用BindUserList方法,则 UserList属性会是null, 在前台页面调用foreach输出的时候空引用
     
     
    解决方案:
     
    private IList<User> _UserList;
     
    public IList<User> UserList
    {
    get
    {
    if(this._UserList==null)
    {
    this._UserList=this.GetUserList(this.ddlGroupId.Value.ToSimpleT<int>(0));
    }
    return this._UserList;
    }
    }
     
    这样一来有两个好处:
    (1)、如果某次请求过程中压根就没有用到UserList属性,则可以避免一次初始化UserList的查询;
    (2)、一旦任何一个地方使用到了UserList,则肯定会去查找合适的UserList
     
    如此有效的减少我们在开发过程中的逻辑判断,并保证数据的正确性。
    大家以后设计类的时候多做些参照吧。
  • 相关阅读:
    Android 动画-alpha(渐变透明度动画效果)
    Memento(备忘录)
    Mediator(中介者)
    Iterator(迭代器)
    Command(命令)
    Chain of Responsibility(责任链)
    Template Method(模板方法)
    Interpreter(解释器)
    Proxy(代理)
    Flyweight(享元)
  • 原文地址:https://www.cnblogs.com/yanyuge/p/3134424.html
Copyright © 2011-2022 走看看