Autofac 一个使用Demo

一:接口

二:实现:

三:调用:

首先上图:

一:接口代码

public interface IPersonDa
{
  PersonEntity Get(int id);
}

二:实现

public class PersonDa : IPersonDa
{
  public PersonEntity Get(int id)
  {
    using (BaseMgr.BaseSysDbContext db = new BaseSysDbContext()) {
    var result = db.People.Where(p => p.Id == id).FirstOrDefault();
    return new PersonEntity();//返回 Person 成 PersonEntity 并返回
    }
  }
}

数据访问实体:

public class Person
{
  public int Id { get; set; }

  public string Name { get; set; }
}

传输(其他)实体:

public class PersonEntity
{
  public int Id { get; set; }

  public string Name { get; set; }
}

三:调用

static void Main(string[] args)
{
  ContainerBuilder builder = new ContainerBuilder();

  var basePath = AppDomain.CurrentDomain.BaseDirectory;
  var dataAccess = Assembly.LoadFrom("ChesFrame.DataAccess.dll");
  var dataAccess2 = Assembly.LoadFrom("ChesFrame.IDataAccess.dll");

  builder.RegisterAssemblyTypes(dataAccess2,dataAccess ).Where(t => t.Name.EndsWith("Da")).AsImplementedInterfaces();

  var container = builder.Build();
  foreach (var sub in container.ComponentRegistry.Registrations)
  {
    Console.WriteLine("Target-------" +sub.Target.ToString());
    Console.WriteLine("Services-----" + sub.Services.ToString());
    foreach (var m in sub.Services)
    {
      Console.WriteLine("Service------" + m.ToString());
    }
    Console.WriteLine("-------------------------------------");

  }
var person = container.Resolve<IPersonDa>();
}

运行结果:

另外说一点关于项目中使用EF:

  项目中EF只是当成了一个数据访问工具,它使用的实体为数据访问实体,数据访问实体只能出现在数据访问层中,

  看一下数据访问层的结构

  

Person、Blog、Post 都只能在 DataAccess中,之外不能访问到;

代码

在项目中,这里的调用 可能需要单独抽取出来,做成Utility,可以 结合配置文件,从配置文件中提取DLL,加载入CurrentDomain中

Autofac入门指南:http://autofac.readthedocs.org/en/latest/getting-started/index.html

Autofac 一个使用Demo

时间: 2024-10-10 14:04:54

Autofac 一个使用Demo的相关文章

ArcGIS API for JavaScript开发环境搭建及第一个实例demo

原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3.9,它提供了更为丰富而又强大的功能.     一.安装前准备 1.ArcGIS Server for JavaScript API各版本下载地址:http://support.esrichina-bj.cn/2011/0223/960.html,我们选择下载最新的"ArcGIS API for Ja

这是关于FastJson的一个使用Demo,在Java环境下验证的

1 public class User { 2 private int id; 3 private String name; 4 public int getId() { 5 return id; 6 } 7 public void setId(int id) { 8 this.id = id; 9 } 10 public String getName() { 11 return name; 12 } 13 public void setName(String name) { 14 this.n

javascript 跟随鼠标移动的提示框的一个小demo

下面提供一种跟随鼠标移动的提示框的思路,方便在以后工作中应用,主要是应用到鼠标移动产生的数值来进行移动提示框的定位... CSS代码   .box{height:100px;width:100px;background:orange;position:relative;margin:40px;} .move{height:20px;width:20px;background:red;position:absolute;left:0px;top:0px;display:none;} HTML代码

jQuery 中 ajax 提交数据应用的一个小demo

举一个jquery中ajax的应用小 demo 便于以后的更多项目拓展 ,这里要注意的是保存的文件名问题 ... ajax02.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="form&qu

jQuery 中 ajax 请求数据应用的一个小demo

举一个jquery中ajax的应用小 demo 便于以后的更多项目拓展 ,这里要注意的是保存的文件名和文件图片路径问题 ... ajax01.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> ajax小例子 </title> </head> <body> <!--

Highcharts+Ajax+Json+Sturts2实现的图形异步实时刷新的一个简单demo

原文:Highcharts+Ajax+Json+Sturts2实现的图形异步实时刷新的一个简单demo 源代码下载地址:http://www.zuidaima.com/share/1550463370480640.htm 此功能可以用在后端对数据的实时抓取,前端动态更新时使用,可以根据数据的变化进行实时刷新,基于之前我上传的一个图形demo改制.如有意见建议,疑问,大家可以留言一起探讨. 源代码截图:

模仿京东顶部搜索条效果制作的一个小demo

最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 1 #define kScreenWidth [UIScreen mainScreen].bounds.size.width 2 #define kScreenHeight [UIScreen mainScreen].bounds.size.height 3 4 #import "mainViewController.h" 5 6 @interface mainViewController

[Java] 第一个Spring Demo

1  Spring关键字: DI:Dependency Injection,依赖注入.依赖指的是调用关系.A调用B则A依赖于B.注入指的是A不再new B对象,而是由Spring容器来注入B对象. IoC:控制反转,对象不再由调用者来new,而是把new对象的任务交给Spring容器,Spring从XML中读取对象的属性值. AOP:面向切面变成(区别于面向对象编程OOP).so,切面是什么?一些公共行为? DAI:Spring整合了针对多种数据库的访问方式(含JDBC.OXM等) 框架融合:可

一个画板demo(二)

 一个画板demo(二) 上一篇已经完成了基本的页面布局,接下来要实现第一个功能:让画笔画上去,改变画笔颜色,以及改变画笔粗细. 在storyboard和xib中拖拽控件来布局界面,并且想要在界面上加点东西的话就要在awakefromnib方法里添加. 画板的效果是能够识别在屏幕上的触摸点来画线,因此要获得屏幕上的触摸点. 有两种方法,一种是在 -(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent 方法里面获取触摸点(大概这样子)