作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Razor 类库来制作可在多个 ASP.NET Core MVC 项目中使用的可重用复杂 View (其中包括其 Controller 和多个 View 组件)。问题在于 Controller 使用依赖项注入(inject)(称为“GatewayProxy”的自定义服务和字符串本地化)。将服务注入(inject) RCL 内的 Controller 的正确方法是什么?
这是我的 RCL 的结构:
这是一个异常(exception):
最佳答案
您提到了如何通过将依赖项添加到主项目的 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/
我是一名优秀的程序员,十分优秀!