我正在尝试开发一个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); }
}
}
谢谢
答案 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
所以我怀疑如果不使用构造函数就无法注入依赖项。
也许,如果您描述自己的意图,可能还有另一个好的解决方案。