C#依赖注入- setter注入

在文章 C#依赖注入-初步概念了解 中,简单的介绍了依赖注入常用三种方式:setter注入,构造函数注入,接口注入。
在此文章中,使用代码具化对setter注入的解释。

setter注入:
就是在类A里面定义一个C接口的属性D,在A的上下文通过B实例化一个对象,然后将这个对象赋值给属性D。主要就是set 与 get

Setter注入(Setter Injection)是指在客户类中,设置一个服务类接口类型的数据成员,并设置一个Set方法作为注入点,这个Set方法接受一个具体的服务类实例为参数,并将它赋给服务类接口类型的数据成员。

实例Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SetterInjection
{
    // 首先定义一个接口
    internal interface IServiceClass
    {
        String ServiceInfo();
    }

    // 定义一个类,实现接口IServiceClass, 并实现方法ServiceInfo, return "我是ServceClassA"
    internal class ServiceClassA : IServiceClass
    {
        public String ServiceInfo()
        {
            return "我是ServceClassA";
        }
    }
    // 再定义一个类, 实现接口IServiceClass, 并实现方法ServiceInfo, return "我是ServceClassB"
    internal class ServiceClassB : IServiceClass
    {
        public String ServiceInfo()
        {
            return "我是ServceClassB";
        }
    }

    // 定义一个Client类,实现接口注入
    internal class ClientClass
    {
        //注入点
        private IServiceClass _serviceImpl;
        //客户类中的方法,初始化注入点  
        public void Set_ServiceImpl(IServiceClass serviceImpl)
        {
            this._serviceImpl = serviceImpl;
        }

        public void ShowInfo()
        {
            Console.WriteLine(_serviceImpl.ServiceInfo());
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            IServiceClass serviceA = new ServiceClassA();
            IServiceClass serviceB = new ServiceClassB();

            ClientClass client = new ClientClass();

            client.Set_ServiceImpl(serviceA);
            client.ShowInfo();//结果:我是ServceClassA
            client.Set_ServiceImpl(serviceB);
            client.ShowInfo();//结果:我是ServceClassB

            Console.ReadLine();
        }
    }
}
2789632-ed3ea069238c2824.png
Result

参考网址: C# 依赖注入 - 一杯水M - 博客园

2789632-bb59feb5615b178c.png

2789632-83943df68446ed4b.png
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值