故如虹,知恩;故如月,知明
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术

c#使用unity实现依赖注入二:基本使用

4798人阅读 2019/1/22 15:00 总访问:3905838 评论:0 收藏:0 手机
分类: .NET


使用Unity实现依赖注入的基本步骤:

1:需要创建一个容器

2:给容器添加类与类之间的关系(控制反转)

3:  在需要的地方从容器里边拿需要的对象(依赖注入)



一:创建一个unity容器与添加好类与类之间的关系


使用RegisterType方式注入类与类之间的关系

public class MyUnityContainer
    {
        //实例化一个容器
        private static IUnityContainer uc = new UnityContainer();
        static MyUnityContainer()
        {
            //添加好类之间的依赖关系
            uc.RegisterType<IUserDAL, UserDAL>();
        }

        //获取容器,方便其他类使用
        public static IUnityContainer GetContainer()
        {
            return uc;
        }
    }


当然也可以使用RegisterInstance方式注入类与类之间的关系

   UserTwoDAL udal = new UserTwoDAL();
   uc.RegisterInstance<IUserDAL>(udal);


Unity注入方式

RegisterType:只能注入两个类之间的关系。默认生命周期:瞬时模式

RegisterInstance:可以注入一个实例,可以做很多初始化工作,有一些特殊需求的情况下使用。默认生命周期:单利模式


IUserDAL是个接口

   public interface IUserDAL
    {
        string GetUser();
    }

UserTwoDAL是个实现类

public class UserDAL : IUserDAL
    {
        public string GetUser()
        {
            return "str1";
        }
    }



二:在需要的地方从容器里边拿需要的对象

  public ActionResult Index()
        {
            //获取到容器
            IUnityContainer iuc = MyUnityContainer.GetContainer();
            //从容器拿到需要的对象
            IUserDAL iud = iuc.Resolve<IUserDAL>();
            ViewBag.username = iud.GetUser();
            return View();
        }



如果要换一个实现类只需要在配置类之间关系的地方修改一下配置就行了

   uc.RegisterType<IUserDAL,UserTwoDAL>();







欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739

评价