一:接口

二:实现:

三:调用:

首先上图:

一:接口代码

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

转载于:https://www.cnblogs.com/beixing/p/3915478.html

Autofac 一个使用Demo相关推荐

  1. LeadTools Android 入门教学——运行第一个Android Demo

    LeadTools 有很多Windows平台下的Demo,非常全面,但是目前开发手机应用的趋势也越来越明显,LeadTools也给大家提供了10个Android的Demo,这篇文章将会教你如何运行第一 ...

  2. java线程间通信:一个小Demo完全搞懂

    版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...

  3. js 取得input绑定的datalist中的值_原生JS写一个ToDo Demo

    周六加班没什么事,于是乎...上班摸鱼,用原生JS写了一个ToDo Demo,废话少叙,直接看效果: 如图,实现了以下需求(以下的具体实现我会一一道来): 0.页面的基本布局: 1.rem布局.在不同 ...

  4. 微信小程序云开发实现一个社区 Demo(补充)

    之前写了一篇文章介绍如何使用云开发来实现一个社区 Demo: 微信小程序~云开发的实现的一个社区 Demo(完结~) 得到很多小伙伴的认可但也出现了一些问题. 主要问题有: 发布的图片不显示,跨端发布 ...

  5. 第一个Flutter demo——实现无限循环列表

    第一个Flutter demo(一) 参照flutter官网,实现第一个Flutter应用.第一部分:实现无限循环列表 第一部分功能介绍: 从零开始创建了一个 Flutter 应用: 编写 Dart ...

  6. springboot mybatis easyui 整合的一个小demo

    springboot mybatis easyui 整合的一个小demo 这是最终完成界面 话不多说 开整! 这是项目结构 数据库 表结构和数据库 (有点乱 之前本来是个正经图书表的 = =.) /* ...

  7. cuda编程与gpu并行计算(三):一个小demo了解cuda基本语法

    gpu程序的一般步骤 CPU分配空间给GPU(cudaMalloc) CPU复制数据给GPU(cudaMemcpy) CPU加载kernels给GPU做计算(Kernel核: 可以理解为C/C++中的 ...

  8. 用HTML和CSS简单语法写的一个简历Demo

    学完了学堂在线Web攻城狮课程的前两章节(HTML和CSS基础).完成了第二章布置的作业--利用学过的知识制作一个简历Demo. 我...拿校长的百科词条做简历了,不知道有没有侵权......现在发布 ...

  9. windows环境下使用clion引入eigen库并实现一个小demo

    本文仅作个人记录用,之前未接触过C++,也没有使用过clion和cmake,不喜勿喷. 首先下载clion,mingw并配置相关环境,安装cmake,这部分比较简单,没有遇到什么问题. 接下来新建一个 ...

最新文章

  1. MySQL查询出错提示 --secure-file-priv解决方法
  2. php基础不好,基础不好,问个php类调用的初级问题
  3. python 获取系统相关编码的函数
  4. 详解Objective-C中委托和协议
  5. Windows 7 HomeGroup的隐私保护
  6. MongoDB 教程番外篇之管理工具: Rockmongo
  7. alook浏览器js扩展网站_备用浏览器Alook所能实现的功能果真强大(文末有alook兑换码抽奖)...
  8. 如何真正实现无提示保存Excel文档
  9. Go_认识golang
  10. VC++控件加载BMP图片(静态和动态方式)
  11. 我把SpringBoot的banner换成了美女,老板说工作不饱和,建议安排加班...
  12. 训练 AI 创作诗歌 6 NLP 从零到英雄 Training an AI to create poetry
  13. 电脑怎样查看密码?100%简单实用的方法
  14. 强烈推荐一款好用的API接口
  15. html内部css调节背景图片的大小,css中怎么改变背景图片大小?
  16. 修改UA在PC中访问只能在微信中打开的链接
  17. 江苏中理网络科技有限公司介绍
  18. 二次规划及qpoases简要介绍
  19. iperf使用与交叉编译
  20. 【海康视频SDK】linux服务器端截图与下载视频

热门文章

  1. static unsigned short,int ,char
  2. mac 源生安装mysql_docker安装MySQL数据库
  3. MATLAB在温室中的应用,基于MATLAB的日光温室内气温的图形显示方法与流程
  4. rabbitmq优先级队列
  5. shiroConfig配置中要注意的事项
  6. 013_logback中的SyslogAppender
  7. mysql list列表批量更新数据,Mybatis传入List实现批量更新的示例代码
  8. 添加用户信息的方法java_添加用户的流程分析
  9. 自定义View:测量measure,布局layout,绘制draw
  10. php uncaught thrown,PHP异常详解