zoukankan      html  css  js  c++  java
  • 自定义延迟加载类

    延迟加载类

    public class LazyLoader<TModel> where TModel:class
        {
            TModel _data;
            Func<TModel> _loadDataFunc = null;
            bool _loaded = false;
            public LazyLoader():this(null){ }
            public LazyLoader(Func<TModel> loadDataFunc) 
            {
                _loadDataFunc = loadDataFunc;
                _data = null;
                _loaded = false;
            }
            public TModel QueryData() 
            {
                if (!_loaded && _loadDataFunc != null)
                {
                    _data = _loadDataFunc();
                }
                return _data;
            }
            public void SetData(TModel value) 
            {
                _data = value;
                _loaded = true;
            }
        }
    
    LazyLoader

    使用方法(简单举列)

    比如员工菜单 可能你再使用这个员工对象的时候并不需要去加载他的菜单 当你要用的时候再加载 这时候就需要延迟加载了

    public class Employee
        {
            public LazyLoader<IEnumerable<Menu>> _menus;
            public Employee(Guid employeeId, string employeeNo, string name, string password, string email, string phone, bool enabled,  bool isAdministrtor, DateTime registerDate, string remark, string ipLimitation)
            {
                EmployeeId = employeeId;
                EmployeeNo = employeeNo;
                Name = name;
                Password = password;
                Email = email;
                Phone = phone;
                Enabled = enabled;
                IsAdministrator = isAdministrtor;
                RegisterDate = registerDate;
                Remark = remark;
                IpLimitation = ipLimitation;
                _menus = new LazyLoader<IEnumerable<Menu>>(() => SystemResourceService.QueryMenusByEmployeeId(employeeId));
            }
    
            public Guid EmployeeId { get; private set; }
            public string EmployeeNo { get; private set; }
            public string Name { get; private set; }
            public string Password { get; private set; }
            public string Email { get; private set; }
            public string Phone { get; private set; }
            public bool Enabled { get; set; }
            public bool IsAdministrator { get; private set; }
            public DateTime RegisterDate { get; private set; }
            public string Remark { get; private set; }
            public string IpLimitation { get; set; }
            public object Id
            {
                get { return EmployeeId; }
            }
        }
    
    Employee
  • 相关阅读:
    这是一段Java程序员写给最爱的老婆的代码。
    第一次来写博客,这里可以记录很多故事。
    转 JavaScript前端和Java后端的AES加密和解密
    java webservice浏览器测试地址
    Eclipse4.5在线安装Aptana插件及配置代码提示教程
    彻底的卸载干净oracle 11g(转)
    oracle查看编码以及修改编码(转)
    关于AngularJs数据递归呈现的实现的几种方式
    ionic的ngModel指令失效
    AngularJS 自定义指令详解
  • 原文地址:https://www.cnblogs.com/wuxl360/p/5691164.html
Copyright © 2011-2022 走看看