属性类中的ASPNET CORE依赖项注入

时间:2019-03-06 05:20:15

标签: c# asp.net-core dependency-injection inversion-of-control

我正在尝试开发一个DisplayName属性,该属性具有用于本地化服务的接口,如果将其注入到构造函数中,该接口已经在启动和运行时进行了注册。

由于无法使用构造注入,如何才能实例化本地化服务接口?

这是我的代码

public class MyDisplayNameAttribute : System.ComponentModel.DisplayNameAttribute
{
    private string _resourceValue = string.Empty;
    private ILocalizationService _localizationService;
    public MyDisplayNameAttribute(string resourceKey)
       : base(resourceKey)
    {
        ResourceKey = resourceKey;
    }

    public string ResourceKey { get; set; }

    public override string DisplayName
    {
        get
        {
            _resourceValue = _localizationService.GetLocaleString(ResourceKey);

            return _resourceValue;
        }
    }

    public string Name
    {
        get { return nameof(MyDisplayNameAttribute); }
    }
}

谢谢

1 个答案:

答案 0 :(得分:0)

依赖注入正在与控制反转(https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2)一起工作。因此,框架控制着您的应用程序,并在实例化clss时注入了通过构造函数请求的依赖项。

也请在此处How to create a class without constructor parameter which has dependency injection

所以我怀疑如果不使用构造函数就无法注入依赖项。

也许,如果您描述自己的意图,可能还有另一个好的解决方案。