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

  • 相关阅读:
    【BZOJ3105】【CQOI2013】新Nim游戏
    【BZOJ3884】上帝与集合的正确用法
    【BZOJ3518】点组计数
    【BZOJ4804】欧拉心算
    【BZOJ4059】Non-boring sequences
    【BZOJ 4016】 [FJOI2014]最短路径树问题
    【BZOJ 2744】【HEOI2012】朋友圈
    【BZOJ4417】: [Shoi2013]超级跳马
    【BZOJ 2713】[Violet 2]愚蠢的副官&&【BZOJ1183】[Croatian2008]Umnozak——【数位DP】
    【BZOJ】1969: [Ahoi2005]LANE 航线规划
  • 原文地址:https://www.cnblogs.com/beixing/p/3915478.html
Copyright © 2011-2022 走看看