【发布时间】:2018-10-09 18:25:49
【问题描述】:
我构建了一个 .NetCore 2.1 项目并有一个像这样的基本控制器类
public class MyBaseController:Controller
{
#region Properties
protected readonly ILogger Logger;
protected readonly VVDCCore.Tools.Interfaces.IResourceManager Resx;
protected IDictionary<string,string> ExtraParameters;
#endregion
#region CONSTRUCTOR
public BaseController(ILogger<BaseController> logger,
VVDCCore.Tools.Interfaces.IResourceManager resxManager)
{
Logger = logger;
Resx = resxManager;
}
#endregion
}
我所有的控制器都是这个基类的子类。
我有一个服务(实现 IResourceManager 接口的 ResourceServices),它允许根据键和上下文检索值。
感谢 IActionContextAccessor 接口,我知道如何在服务中访问控制器的名称和操作的名称。 但我想获得当前的控制器对象。 在服务中,我需要从我的 baseController 访问属性 ExtraParameters 但不知道该怎么做
总而言之,我想做这样的事情
public class ResourcesServices{
public ResourceServices([CurrentController] controller)
{
var extraParameters = ((MyBaseController)controller).ExtraParameters;
}
}
有什么办法吗? TIA
【问题讨论】:
-
你可以做一个简单的类型转换。但这是一个可疑的设计,服务不需要知道(依赖)它的调用者。因为这是一个循环依赖。不能把相关数据作为参数传递吗?
标签: c# dependency-injection asp.net-core-mvc