using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 封装泛型CRUD
{
    public class TeacherInfoDAL<T> : BaseDAL<T> where T : new()
    {
        public override T Add(T obj)
        {
            Console.WriteLine("TeacherInfoDAL添加了一个对象");
           return base.Add(obj);

}

public override int Del(T obj)
        {
            Console.WriteLine("TeacherInfoDAL删除了一个对象");
            return base.Del(obj);

}

public override T Update(T obj)
        {
            Console.WriteLine("TeacherInfoDAL更新了一个对象");
            return base.Update(obj);
        }

public override IList<T> QueryList(Func<T, bool> whereLambada)
        {
            Console.WriteLine("TeacherInfoDAL查询了系列个对象");
            return base.QueryList(whereLambada);
        }
    }
    public class UserInfoDAL<T> : BaseDAL<T> where T : new()
    {
        public override  T Add(T obj)
        {
            Console.WriteLine("UserInfoDAL添加了一个对象");
            base.Add(obj);
            return obj;

}

public override int Del(T obj)
        {
            Console.WriteLine("UserInfoDAL删除了一个对象");
           return  base.Del(obj);
          
        }

public override T Update(T obj)
        {
            Console.WriteLine("UserInfoDAL更新了一个对象");
            return base.Update(obj);
        }

public override IList<T> QueryList(Func<T, bool> whereLambada)
        {
            Console.WriteLine("UserInfoDAL查询了系列个对象");
          return  base.QueryList(whereLambada);
        }
    }

public class BaseDAL<T> where T : new()
    {
        public virtual T Add(T obj)
        {
           
            return obj;
        }

public virtual int Del(T obj)
        {
          
            return 0;
        }

public virtual T Update(T obj)
        {
           
            return new T();
        }

public virtual IList<T> QueryList(Func<T,bool> whereLambada )
        {

IList<T> list = new List<T>();
            foreach (var r in list)
            {
                if (whereLambada(r))
                {
                    list.Add(r);
                }
            }
            return list;
        }

}

public abstract class BaseBLL<T> where T : new()
    {
        public BaseDAL<T> basedal;

public virtual T Add(T obj)
        {
            Console.WriteLine("基本业务处理add");
            return new T();
        }

public virtual int Del(T obj)
        {
            Console.WriteLine("基本业务处理del");
            return 0;
        }

public virtual T Update(T obj)
        {
            Console.WriteLine("基本业务处理update");
           return new T();
        }

public virtual IList<T> QueryList(Func<T, bool> whereLambada)
        {
            Console.WriteLine("基本业务处理QueryList");
           return new List<T>();
        }

public abstract void setDAL( );

}

public class UserInfoBLL<T>:BaseBLL<T> where T : new()
    {
        public UserInfoBLL()
        {
            setDAL();
        }

public override T Add(T obj)
        {
            base.Add(obj);
            Console.WriteLine("UserInfoBLL务处理add");
            return basedal.Add(obj);
        }

public override int Del(T obj)
        {
            base.Del(obj);
            Console.WriteLine("UserInfoBLL务处理del");
          
            return basedal.Del(obj);
        }

public override T Update(T obj)
        {
            base.Update(obj);
            Console.WriteLine("UserInfoBLL务处理update");
            return basedal.Update(obj);
        }

public override IList<T> QueryList(Func<T, bool> whereLambada)
        {
            base.QueryList(whereLambada);
            Console.WriteLine("UserInfoBLL务处理querylist");
            return basedal.QueryList(whereLambada);
        }

public override void setDAL()
        {
            basedal=new UserInfoDAL<T>();
        }
    }

public class TeacheInfoBLL<T> : BaseBLL<T> where T : new()
    {
        public TeacheInfoBLL()
        {
            setDAL();
        }

public override void setDAL()
        {
            basedal=new TeacherInfoDAL<T>();
           
        }
        public override T Add(T obj)
        {
            base.Add(obj);
            Console.WriteLine("TeacheInfoBLL务处理add");
            return basedal.Add(obj);
        }

public override int Del(T obj)
        {
            base.Del(obj);
            Console.WriteLine("TeacheInfoBLL务处理del");

return basedal.Del(obj);
        }

public override T Update(T obj)
        {
            base.Update(obj);
            Console.WriteLine("TeacheInfoBLL务处理update");
            return basedal.Update(obj);
        }

public override IList<T> QueryList(Func<T, bool> whereLambada)
        {
            base.QueryList(whereLambada);
            Console.WriteLine("TeacheInfoBLL务处理querylist");
            return basedal.QueryList(whereLambada);
        }

}

class Program
    {
        static void Main(string[] args)
        {
            BaseBLL<Student> bll=new TeacheInfoBLL<Student>();
            Student student=new Student();
            student.StudentNo = 1;
            bll.Add(new Student());
            bll.Del(new Student());
            bll.Update(new Student());
            bll.QueryList(a => a.StudentNo != 0);
            Console.WriteLine("------------------------");
            BaseBLL<Teacher> bll2 = new UserInfoBLL<Teacher>();
            Teacher t = new Teacher();
            t.TeacherNO = 1;
            bll2.Add(t);
            bll2.Del(t);
            bll2.Update(t);
            bll2.QueryList(a => a.TeacherNO != 0);
            Console.ReadKey();
        }
    }

public class Student
    {
        public int StudentNo { get; set; }
        public string Name { get; set; }
        public string Sex { get; set; }
        public int Age { get; set; }
        public string Address { get; set; }
        public string Class { get; set; }
        public string DeptNO { get; set; }
    }

public class Teacher
    {
        public int TeacherNO { get; set; }
        public string Name { get; set; }
        public string Sex { get; set; }
        public int Age { get; set; }
        public string DeptNo { get; set; }
    }
}

关于简单的三层的简化(bll,dal,model)的封装这里全部都在一个文件主要在于明白意思的更多相关文章

  1. Web三层-UI/BLL/DAL/MODEL

    2013传智播客视频\视频\2013-05-28-EF\视频 创建4个程序集,添加引用,model添加映射, P01UI表现层--BLL+MODELP02BLL业务层--DAL+MODELP03DAL ...

  2. NHibernate框架与BLL+DAL+Model+Controller+UI 多层架构十分相似--『Spring.NET+NHibernate+泛型』概述、知识准备及介绍(一)

    原文://http://blog.csdn.net/wb09100310/article/details/47271555 1. 概述 搭建了Spring.NET+NHibernate的一个数据查询系 ...

  3. 【转】asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别

    原文地址:http://blog.csdn.net/luoyeyu1989/article/details/8275866 首先,MVC和三层架构,是不一样的. 三层架构中,DAL(数据访问层).BL ...

  4. asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别 转载自:http://blog.csdn.net/luoyeyu1989/article/details/8275866

    首先,MVC和三层架构,是不一样的. 三层架构中,DAL(数据访问层).BLL(业务逻辑层).WEB层各司其职,意在职责分离. MVC是 Model-View-Controller,严格说这三个加起来 ...

  5. 简单的三层asp.net webForm使用Ninject实现Ioc

    简单的三层asp.net webForm使用Ninject实现Ioc 在asp.net webform下使用Ninject的简单过程. 首先建立个项目,如下图,简单三层(PS:UI层要同时引用BLL. ...

  6. MVC中Model BLL层Model模型互转

    MVC中Model BLL层Model模型互转 一. 模型通常可以做2种:充血模型和失血模型,一般做法是模型就是模型,不具备方法来操作,只具有属性,这种叫做失血模型(可能不准确):具备对模型一定的简单 ...

  7. 简单解读linux的/proc下的statm、maps、memmap 内存信息文件分析【转】

    转自:https://blog.csdn.net/sctq8888/article/details/7398776 转载自:http://hi.baidu.com/deep_pro/blog/item ...

  8. 三层架构中bll层把datatable转换为实体model的理解

    看了很多人的项目,很多都是用到三层架构,其中BLL层中有一种将DataTable转换为实体的方法.一直没有明白为啥要这样做,今天特意去搜索了一下,如果没有答案我是准备提问,寻求解答了.还好找到一个相关 ...

  9. C#里面BLL、Model、DAL、UI层

    C# 三层架构分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL)再加上实体类库(Model) 1.实体类库(Model),主要存放数据库中的表字段. 操作: (1)先建立实体类库Mode ...

随机推荐

  1. html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感)

    html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感) 效果图: 运行原理和技术: 当页面加载完毕,利用jquery向后台发送ajax请求,去后台拼接<select>&l ...

  2. Linux中的中断处理

    1. Linux中中断除了中断分层之外,还有一种就是中断线程化 存在意义:在Linux中,中断具有最高的优先级.不论在任何时刻,只要产生中断事件,内核将立即执行相应的中断处理程序,等到所有挂起的中断和 ...

  3. streamsets geoip 使用

    geoip 分析对于网站数据分析是很方便的 安装geoip2 下载地址 https://dev.maxmind.com/geoip/geoip2/geolite2/ 配置streamsets geoi ...

  4. 动态库中的soname

    soname( Short for shared object name) 其是应用程序加载dll 时候,其寻找共享库用的文件名.其格式为 lib + math+.so + ( major versi ...

  5. 《快学Scala》

    Robert Peng's Blog - https://mr-dai.github.io/ <快学Scala>Intro与第1章 - https://mr-dai.github.io/S ...

  6. GNU Radio: 射频子板

    本文简要介绍 USRP 配套的子板参数信息. 射频子板WBX-40 性能特点 频率覆盖:50 MHz – 2.2GHz 最大信号处理带宽:40MHz 行为描述 WBX-40提供高宽带收发器,可提供高达 ...

  7. nginx 点播mp4方法

    1.配置文件 配置文件中rmtp部分: application vod { play html; } 配置文件中http部分: location ~ .mp4$ { root html; mp4; l ...

  8. Window 端口占用

    Windows平台 在windows命令行窗口下执行: 1.查看所有的端口占用情况 C:\>netstat -ano 协议    本地地址                     外部地址    ...

  9. windows8.1中组件服务DCOM配置里属性灰色不可修改的解决办法

    由于电脑升级,更换成了windows8.1的64位操作系统,今天遇到组件服务中DCOM配置里IIS Admin Service属性呈现灰色,不能修改. 查找官方文档,原来这是win8.1 x64的安全 ...

  10. php 数字格式化

    php 数字格式化 1.位数不足前面补0 <?php for($i=1; $i<=17 ;$i++){ $var = sprintf("0%3d",$i); echo ...