zoukankan      html  css  js  c++  java
  • 基于接口隔离原则的依赖注入实现

    接口隔离原则

    不强迫接口的使用者依赖其不需要的接口

    接口隔离原则的一般实现

        public interface IFoo
        {
            void DoSomeOperation();
        }
    
        public interface IBar
        {
            void DoAnotherOperation();
        }
    
        public class Qux : IFoo, IBar
        {
            public Qux()
            {
                Console.WriteLine("Qux instanced");
            }
    
            public void DoAnotherOperation()
            {
                Console.WriteLine("I am IBar");
            }
    
            public void DoSomeOperation()
            {
                Console.WriteLine("Just IFoo");
            }
        }
    

    ASP.NET Core 依赖注入方式注入接口的实现类

    为了使IFoo和IBar接口使用同一个Qux实例,可以使用以下方式注入所需服务

            static void Main(string[] args)
            {
                var root = new ServiceCollection()
                    .AddScoped<Qux>()
                    .AddScoped<IFoo>(provider=>provider.GetService<Qux>())
                    .AddScoped<IBar>(provider => provider.GetService<Qux>())
                    .BuildServiceProvider();
    
                using (var scope = root.CreateScope())
                {
                    var provider = scope.ServiceProvider;
                    provider.GetRequiredService<IFoo>();
                    provider.GetRequiredService<IBar>();
                }
    
                Console.ReadLine();
            }
    

    运行效果如下

  • 相关阅读:
    Python并发编程—自定义线程类
    Python并发编程—线程对象属性
    syfomny 好教材....
    drupal_get_css -- drupal
    common.inc drupal
    date iso 8610
    js很好的教材
    user_load_by_name
    eck add form
    把一个表导入到另一个地方...
  • 原文地址:https://www.cnblogs.com/Saints/p/13358117.html
Copyright © 2011-2022 走看看