gpt4 book ai didi

razor - 如何在可重用 Razor 类库内的 Controller 中注入(inject)服务

转载 作者:行者123 更新时间:2023-12-01 16:06:28 24 4
gpt4 key购买 nike

我正在使用 Razor 类库来制作可在多个 ASP.NET Core MVC 项目中使用的可重用复杂 View (其中包括其 Controller 和多个 View 组件)。问题在于 Controller 使用依赖项注入(inject)(称为“GatewayProxy”的自定义服务和字符串本地化)。将服务注入(inject) RCL 内的 Controller 的正确方法是什么?

这是我的 RCL 的结构:

enter image description here

这是一个异常(exception):

enter image description here

最佳答案

您提到了如何通过将依赖项添加到主项目的 Startup.cs 来解决此问题。但请考虑到此可重用库的任何使用者可能不记得(或不知道)您的库需要哪些依赖项。

为了解决这个问题,您可以在 Rcl 中创建一个基于 IServiceCollection 的扩展来执行依赖项注册。

public static void AddMyRclServices(this IServiceCollection serviceCollection, IConfiguration config)
{
serviceCollection.AddTransient<IRclService1, RclService1>();
serviceCollection.AddScoped<IRclService2, RclService2>();
}

然后在 MVC 项目的 Startup.cs 中调用扩展

using Rcl.Extensions

public void ConfigureServices(IServiceCollection services)
{
services.AddMyRclServices(config);
}

关于razor - 如何在可重用 Razor 类库内的 Controller 中注入(inject)服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52911182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com