zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    2013年元旦新年好
    2012第52周三阴雨
    2013第1周四雪
    2013年元旦新年好
    2013第1周三阴冷
    2012第52周日晴冷
    2012周六补记
    PHP怎么调用其他类的方法
    面向对象复习笔记(一)
    Laravel 引入自定义类库或第三方类库
  • 原文地址:https://www.cnblogs.com/beixing/p/3915478.html
Copyright © 2011-2022 走看看