【发布时间】:2020-07-19 18:21:13
【问题描述】:
我有一个 Asp.Net Core 3.1 现有项目,在 BusinessLayer 中有 50 到 60 个服务。现在业务规则已经改变,所以我需要检查每个服务特定逻辑的每个方法,以确保用户可以做某事。
为此,我需要获取一些数据对象,例如说
UserPermission userPermission
从 ControllerBase 到服务类。这个对象需要在ControllerBase中设置,并在每个Service Class方法中使用
如何在不对所有控制器或服务进行大量更改而不对方法签名进行任何更改的情况下做到这一点。
我确实查找了这篇文章(http://rion.io/2016/01/04/accessing-identity-info-using-dependency-injection-in-net-5/),它正在谈论类似的事情
如果没问题,我需要在没有任何接口的情况下使用解析器还是应该使用接口和实现
这是我目前正在做的和正在做的事情
添加了这样的两个方法的接口
public interface IService
{
UserPermission GetProperty();
void SetProperty(UserPermission userPermission);
}
在课堂上
public class Service : IService
{
UserPermission _userPermission;
public UserPermission GetUserPermission ()
{
return _userPermission;
}
public void SetUserPermission (UserPermission userPermission)
{
this._userPermission= userPermission;
}
}
在 StartUp.cs 中
services.AddScoped<IService, Service>();
在每个控制器中,我注入 IService 并传递给 BaseController,在那里它使用 SetUserPermission() 方法设置 UserPermission IService 的值
在每个服务中我注入 IService 并使用 IService 的 GetUserPermission() 方法获取 UserPermission 的值
这可行,但我想验证此方法或找到更好的方法来完成此操作。
感谢您的宝贵时间
【问题讨论】:
-
你的 UserPermission 是什么?如果你想在 BaseController 中获得它,只需像
Service那样注入它。 -
它只是一个具有 setter/getter 属性的类
标签: c# asp.net-core dependency-injection