autofac 初步学习
//数据处理接口
public interface IDal<T> where T : class
{
void Insert (T model);
void Update(T model);
void Delete(T model);
T Select(Int32 id);
}
//MsSql接口
public class MsSqlDal<T> : IDal<T> where T:class ,new ()
{
public void Insert(T model)
{
Console.WriteLine("您向MsSql添加了一条记录!" + typeof(T).Name + ";model:" + model.ToString());
}
public void Update(T model)
{
Console.WriteLine("您向MsSql修改了一条记录!" + typeof(T).Name + ";model:" + model.ToString());
}
public void Delete(T model)
{
Console.WriteLine("您向MsSql删除了一条记录!" + typeof(T).Name + ";model:" + model.ToString());
}
public T Select(Int32 id)
{
Console.WriteLine("您向MsSql查询了一条记录!" + typeof(T).Name );
return new T();
}
}
//MySql接口
public class MySqlDal<T> : IDal<T> where T : class ,new()
{
public void Insert(T model)
{
Console.WriteLine("您向MySql添加了一条记录!" + typeof(T).Name + ";model:" + model.ToString());
}
public void Update(T model)
{
Console.WriteLine("您向MySql修改了一条记录!" + typeof(T).Name + ";model:" + model.ToString());
}
public void Delete(T model)
{
Console.WriteLine("您向MySql删除了一条记录!" + typeof(T).Name + ";model:" + model.ToString());
}
public T Select(Int32 id)
{
Console.WriteLine("您向MySql查询了一条记录!" + typeof(T).Name );
return new T();
}
}
//数据仓储接口
public interface IReposity<T> where T:class
{
void Insert(T model);
void Update(T model);
void Delete(T model);
T Select(Int32 id);
}
//
public class Reposity<T> : IReposity<T> where T : class
{
readonly IDal<T> _dal;
public Reposity(IDal<T> dal)
{
this._dal = dal;
}
public void Insert(T model)
{
_dal.Insert(model);
}
public void Update(T model)
{
_dal.Update(model);
}
public void Delete(T model)
{
_dal.Delete(model);
}
public T Select(Int32 id)
{
return _dal.Select(id);
}
}
public class Order
{
public Int32 Id { get; set; }
public String CName { get; set; }
public String CPhone { get; set; }
public override string ToString()
{
return String.Format("Id:{0},CName:{1},CPhone{2}", Id, CName, CPhone);
}
}
public class OrderBll : IDependency
{
private readonly IReposity<Order> _reposity;
public OrderBll(IReposity<Order> reposity)
{
this._reposity = reposity;
}
public void Insert(Order model)
{
_reposity.Insert(model);
}
public void Update(Order model)
{
_reposity.Update(model);
}
public void Delete(Order model)
{
_reposity.Delete(model);
}
public Order Select(Int32 id)
{
return _reposity.Select(id);
}
}
//所有Bll都继承这个接口
public interface IDependency
{
}
static void Main(string[] args)
{
var builder=new Autofac.ContainerBuilder();
//builder.RegisterGeneric(typeof (MsSqlDal<>)).As( typeof(IDal<>)).InstancePerDependency();
builder.RegisterGeneric(typeof(MySqlDal<>)).As(typeof(IDal<>)).InstancePerDependency();
builder.RegisterGeneric(typeof (Reposity<>)).As(typeof (IReposity<>)).InstancePerDependency();
//注册单类
builder.RegisterType < OrderBll>();
//注册程序集中实现所有IDependency的类
var assem = Assembly.GetExecutingAssembly() ;
builder.RegisterAssemblyTypes(assem).Where(a => a.GetInterfaces().Contains(typeof(IDependency)));
//
var container = builder.Build();
var dal = container.Resolve<OrderBll>();
var order=new Order ()
{
Id=1,
CName = "Aven",
CPhone = "13876544567"
};
dal.Insert(order);
Console.Read();
}
autofac 初步学习的更多相关文章
- json2.js的初步学习与了解
json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...
- 老周的ABP框架系列教程 -》 一、框架理论初步学习
老周的ABP框架系列教程 -- 一.框架理论初步学习 1. ABP框架的来源与作用简介 1.1 简介 1.1.1 ABP框架全称为"ASP.NET Boilerplate ...
- 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助
初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...
- EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库
前提:搭建成功codefirst相关代码,参见EF Codefirst 初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...
- 初步学习python
自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...
- Git的初步学习
前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...
- 语法分析器初步学习——LISP语法分析
语法分析器初步学习——LISP语法分析 本文参考自vczh的<如何手写语法分析器>. LISP的表达式是按照前缀的形式写的,比如(1+2)*(3+4)在LISP中会写成(*(+ 1 2)( ...
- 状态保持以及AJAX的初步学习
嘿嘿,今天学习的有点迷茫哦,主要学习把验证码使用在登录页面时间的一些逻辑,学习这个时间并没有那么的迷惑哦,可是自己写程序时间倒是有点反应迟钝,不过还好总是在最后搞清楚啦,另外就是一步一步的学习是接近项 ...
- LinQ的初步学习与总结
嘿嘿,说起来ORM和LinQ,就感觉离我好遥远的,在学校是没有学习的,所以总感觉学习了LinQ就是大神,现在嘛,终于也体会一点,感觉LinQ只是初步学习,没有太难,当然以后使用在项目中就没有这样的简单 ...
随机推荐
- ie6,ie7兼容性总结(转)
其实浏览器的不兼容,我们往往是各个浏览器对于一些标准的定义不一致导致的,因此,我们可以进行一些初始化,很多问题都很轻松解决. 下面是14条特殊情况仅供参考: 1. 文字本身的大小不兼容.同样是font ...
- vbs实现的支持拖动的txt文本切割器
vbs实现的支持拖动的txt文本切割器 作者: 字体:[增加 减小] 类型:转载 时间:2008-06-20我要评论 用vbs实现的txt文本文件切割器,默认为8000个字符切为一个文件.支持拖动. ...
- Jquery操作select,radio,input,p之类
select的操作 变化后触发操作 $("#txtaddprojecturl").change(function(){ $("#addprojectname") ...
- c#上利用NPlot实现动态曲线图需要的dll文件
这儿暂时只提供我之间根据网上的方法编译出来的dll文件,大家如果需要直接在vs项目上导入就行了,然后在工具箱里就会自动添加一项,大家添加上去就知道了. 下载地址:http://pan.baidu.co ...
- 《Java程序设计》课程总结
课程总结 每周读书笔记链接汇总 第一周读书笔记 第二周读书笔记 第三周读书笔记 第四周读书笔记 第五周读书笔记 第六周读书笔记 第七周读书笔记 第八周读书笔记 第九周读书笔记 第十周读书笔记 实验报告 ...
- 通通的最后一篇博客(附自制html5平面射击小游戏一枚)
这是我最后一篇博客了,由于本人的人生规划吧,以后应该也写不出什么好的技术文章了,到现在在博客园写了2年, 今天一看,我也有了120个粉丝,好几万的浏览量,感谢大家的支持啊~~ 半年没有写博客了,由于半 ...
- [30分钟]MSSQL快速入门教程
1.什么是SQL语句 sql语言:结构化的查询语言.(Structured Query Language),是关系数据库管理系统的标准语言. 它是一种解释语言:写一句执行一句,不需要整体编译执行.语法 ...
- 魅蓝Note2 在Android Studio 与 Eclipse中无法被检测到
昨天到手的Note2 结果发现测试不了,一看魅蓝的版本是android 5.1,然后更新的自己的SDK. 最后…… 仍然不能识别到手机. ———————————— 今天在stackoverflow上搜 ...
- Web API 基于ASP.NET Identity的Basic Authentication
今天给大家分享在Web API下,如何利用ASP.NET Identity实现基本认证(Basic Authentication),在博客园子搜索了一圈Web API的基本认证,基本都是做的Forms ...
- linux网络命令
关键字 write wall last lastlog traceroute netstat mount 1.write 该命令可以给所有在线用户发送消息 示例: 接受消息用户:按回车可以退出 2.w ...