.Net core 泛型服务的注册

本文介绍如何在.NET Core中注册泛型服务。通过定义泛型接口`IService<T>`及其实现类`Service<T>`,并展示如何使用`ServiceCollection`进行依赖注入。
部署运行你感兴趣的模型镜像

在.Net core注册一个泛型的服务

public interface IService<T>
{
    async Task DoAction();
}


public class Service<T> : IService<T>
{
    public async Task DoAction()
    {
        .... do action
    }
}


ServiceCollection.AddScoped<typeof(IService<>), typeof(Service<>)>();
ServiceCollection.AddScoped<typeof(ITInterface<>), typeof(TImplement<>)>(typeof(Service<>));
ServiceCollection.AddScoped(typeof(TImplement<>));

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### .NET 中使用 IOC 容器进行带注册 在现代软件开发中,依赖注入 (Dependency Injection, DI) 是实现松耦合和可测试性的关键技术之一。对于支持的场景,在.NET环境中可以利用多种IOC容器来简化这一过程。 #### Autofac 实现服务注册 Autofac是一个流行的轻量级IoC容器[^4]。下面展示了一个简单的例子说明如何通过Autofac来进行带有服务注册: ```csharp using Autofac; public class Program { public static void Main(string[] args){ var builder = new ContainerBuilder(); // 注册所有实现了 IGenericService<T> 接口的具体类 builder.RegisterGeneric(typeof(GenericServiceImpl<>)) .As(typeof(IGenericService<>)); var container = builder.Build(); using(var scope = container.BeginLifetimeScope()){ var serviceForString = scope.Resolve<IGenericService<string>>(); var serviceForInt = scope.Resolve<IGenericService<int>>(); Console.WriteLine(serviceForString.GetType()); Console.WriteLine(serviceForInt.GetType()); } } } // 假设有一个接口定义如下: public interface IGenericService<T>{ } // 和它的具体实现形式像这样: public class GenericServiceImpl<T>: IGenericService<T>{} ``` 这段代码展示了怎样配置`ContainerBuilder`以处理任何给定类参数T的情况下的`IGenericService<T>`实例化请求。当调用Resolve方法时,它会返回对应于指定类参数的实际对象实例。 #### ASP.NET Core 的内置 IoC 支持 ASP.NET Core自带了强大的依赖注入功能,并且也提供了对的支持[^3]。这里给出一段基于微软官方文档修改后的示例代码用于解释这一点: ```csharp services.AddScoped(typeof(IRepository<>), typeof(EfCoreRepository<>)); ``` 此行表示每当应用程序需要创建一个特定实体类的仓储(`IRepository<TEntity>`)时,都会自动提供相应的EF核心库中的持久层组件作为其实现。 以上两种方式都可以很好地满足大多数情况下关于服务注册的需求。当然还有其他第三方库也可以考虑,比如Castle Windsor、StructureMap等,它们各自有着独特的特性和优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值