首页 > 编程语言 >C# 实现属性注入和方法注入的简单实例

C# 实现属性注入和方法注入的简单实例

时间:2023-03-15 21:55:54浏览次数:27  
标签:C# void IMessageService messageService 实例 message public 注入

// 定义一个接口
    public interface IMessageService
    {
        void SendMessage(string message);
    }
    // 实现该接口
    public class EmailService : IMessageService
    {
        public void SendMessage(string message)
        {
            Console.WriteLine("发送邮件:" + message);
        }
    }
    // 属性注入示例
    public class PropertyDI
    {
        private IMessageService _messageService;
        // 属性注入依赖对象
        public IMessageService MessageService
        {
            set { _messageService = value; }
        }
        public void ProcessMessage(string message)
        {
            // 使用注入的依赖对象
            _messageService.SendMessage(message);
        }
    }
    // 方法注入示例
    public class MethodDI
    {
        private IMessageService _messageService;
        // 方法注入依赖对象
        public void SetMessageService(IMessageService messageService)
        {
            _messageService = messageService;
        }
        public void ProcessMessage(string message)
        {
            // 使用注入的依赖对象
            _messageService.SendMessage(message);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            IMessageService emailService = new EmailService();
            PropertyDI pro = new PropertyDI();
            // 属性注入示例
            pro.MessageService = emailService;
            pro.ProcessMessage("属性注入:Hello World!");

            MethodDI met = new MethodDI();
            // 方法注入示例
            met.SetMessageService(emailService);
            met.ProcessMessage("方法注入:Hello World!");
            Console.ReadLine();

        }
    }

属性注入通过类的属性来注入依赖对象,而方法注入则通过类的方法来注入依赖对象。

在应用中,创建依赖对象后,可以通过属性注入或方法注入将依赖对象注入到“PropertyDI”、“MethodDI”类中,从而实现依赖注入。

翻译

搜索

复制

标签:C#,void,IMessageService,messageService,实例,message,public,注入
From: https://www.cnblogs.com/ziyueyinkong/p/17220247.html

相关文章

  • oracle的sid
    oracle的sid什么是oracle?平常所说的Oracle或Oracle数据库指的是Oracle 数据库管理系统.Oracle数据库管理系统是管理数据库访问的计算机软件(Oracledatabaseman......
  • 基尔排序——C语言描述
    基尔排序——C语言描述目录基尔排序——C语言描述0测试用例框架1定义2代码4测试用例0测试用例框架https://blog.csdn.net/m0_59469991/article/details/127137119?......
  • CF590E Birthday
    \(\text{Solution}\)建出ACAM后利用fail树就可以确定子串关系了,如果建成有向图然后看问题,考虑最长反链等于最小链覆盖,那么就是求一个可重路径覆盖问题Floyd传递闭......
  • c代码实现素数的判断和打印
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intmain(){inti=0;for(i=100;i<=200;i++){intj=0;for(j=2;j<i;j++){if(......
  • c语言学习日志——练习
    T:实现一段字符串从两端逐个向中间移动。code:#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>intmain(){chararr1[]="Welcometo512";chara......
  • 狂神--Redis-Docker启动脚本
    1.docker版本20dockerinfoClient:Context:defaultDebugMode:falsePlugins:app:DockerApp(DockerInc.,v0.9.1-beta3)buildx:BuildwithBuil......
  • 区块链技术入门教程 - Decert
    区块链是一项令人兴奋和有前途的技术,你也许看到过这些频繁在社交媒体、新闻频道上冒出的新名词:智能合约、代币(通证)、Web3、DeFi、DAO组织。如果你还不是很明白他们的意思......
  • [牛客BM70&LeetCode322]零钱兑换Ⅰ——DFS,记忆化搜索,动态规划(C++)
    题目描述给你一个整数数组arr,表示不同面额的硬币;以及一个整数aim,表示需要放入钱包的目标金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组......
  • 论文笔记:Optimizing Queries Using Materialized Views: A Practical, Scalable Solut
    论文笔记:OptimizingQueriesUsingMaterializedViews:APractical,ScalableSolution微软SQLServer关于优化器如何利用物化视图来改写查询的论文。它主要处理SPJG......
  • QOpenGLShader Class
    DetailedDescription此类支持使用OpenGL着色语言(GLSL)和OpenGL/ES着色语言(GLSL/ES)编写的着色器。QOpenGLShader和QOpenGLShaderProgram使程序员免于编译和......