首页 > 其他分享 >.NET7依赖注入 装饰器模式

.NET7依赖注入 装饰器模式

时间:2023-03-06 14:13:16浏览次数:51  
标签:依赖 DoSomething IMyService public myService NET7 logger 装饰

## .NET7依赖注入 装饰器模式
装饰器(Decorator)模式是一种在不改变原始类的情况下增强其功能的模式。在 DI 中,装饰器模式常用于在不改变原始服务的实现的情况下增强其功能,例如在日志服务中增加性能统计和异常记录。通过创建装饰器类,用户可以在不改变原始服务实现的情况下增加新的功能。示例代码如下:
```csharp
// 原始服务
public interface IMyService
{
void DoSomething();
}

public class MyService : IMyService
{
public void DoSomething()
{
// ...
}
}

// 日志装饰器
public class LoggingMyService : IMyService
{
private readonly ILogger _logger;
private readonly IMyService _myService;

public LoggingMyService(ILogger<LoggingMyService> logger, IMyService myService)
{
_logger = logger;
_myService = myService;
}

public void DoSomething()
{
_logger.LogInformation("DoSomething method called");
_myService.DoSomething();
}
}

services.AddScoped<IMyService, MyService>();
services.AddScoped<IMyService>(serviceProvider =>
{
var originalService = serviceProvider.GetRequiredService<IMyService>();
return new LoggingMyService(
serviceProvider.GetRequiredService<ILogger<LoggingMyService>>(),
originalService);
});
```

标签:依赖,DoSomething,IMyService,public,myService,NET7,logger,装饰
From: https://www.cnblogs.com/YataoFeng/p/17183610.html

相关文章

  • .NET7依赖注入
    依赖注入(DependencyInjection,简称DI)功能,使得应用程序可以更加容易地管理组件之间的依赖关系。在.NET7中,DI是通过Microsoft.Extensions.DependencyInjection命名空......
  • Spring Boot 实现装饰器模式,真香!
    前言本文配合实战案例介绍我们平时在springboot项目里面怎么去用装饰器模式、多层装饰怎么玩。首先先说下装饰器模式是什么装饰器模式(DecoratorPattern)也称为包装......
  • Maven常用依赖包简单
    Maven官方仓库:MavenRepository:junit»junit(mvnrepository.com)Mysql1<!--Mysql-->2<dependency>3<groupId>mysql</groupId>4<artifactId>mysql-c......
  • spring的循环依赖和三级缓存
    一、spring中bean的生命周期回顾要理解spring中的循环依赖问题需要先了解spring中bean的生命周期,spring中创建bean的过程中主要有这几个阶段:实例化前$\rightarrow$实......
  • python装饰器
    装饰器本质上是一个Python函数(其实就是闭包),它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。装饰器用于有以下场景,比如:插......
  • java的guice3.0依赖注入方法
    java的guice3.0依赖注入方法,这里采用的是官方文档的第一种注入方法。jar包下载地址:​​https://github.com/google/guice/releases/download/3.0/guice-3.0.zip​​工程目录......
  • 使用jstl得加pom里的依赖
    <!--jstl--><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>taglibs</groupId><......
  • 在pom.xml导入依赖出现以下错误
    无法导入依赖  换一个版本号后解决问题 ......
  • docker搭建maven私服(nexus3),整合springboot上传下载依赖
    一、前言我们在JavaWeb开发中必不可少的就是jar包管理-maven,在没有maven之前,都是自己手动下载jar包导入到项目中,非常的繁琐。maven出现之后,又迎来新的问题,对于仓库里人家......
  • 【SqlServer】修改字段类型提示默认值约束依赖导致无法修改
    参考https://www.cnblogs.com/longxinyv/p/16702758.htmlhttps://www.cnblogs.com/jialanyu/p/13469848.html创建表对Name添加默认值,使其有默认值约束createtableM......