C# 向属性注入一些依赖项
我正在开发一个多语言网站。我的显示多语言文本的解决方案基于以下本地化的Ddisplayattribute类。我想给这个类注入一些依赖项,但是这个类是由.Net Framework实例化的。容器如何在不使用服务定位器的情况下注入依赖关系 这是我的代码块C# 向属性注入一些依赖项,c#,inversion-of-control,castle-windsor,ioc-container,custom-attributes,C#,Inversion Of Control,Castle Windsor,Ioc Container,Custom Attributes,我正在开发一个多语言网站。我的显示多语言文本的解决方案基于以下本地化的Ddisplayattribute类。我想给这个类注入一些依赖项,但是这个类是由.Net Framework实例化的。容器如何在不使用服务定位器的情况下注入依赖关系 这是我的代码块 [AttributeUsage(AttributeTargets.All)] public class LocalizedDisplayAttribute : DisplayNameAttribute { public Multilangu
[AttributeUsage(AttributeTargets.All)]
public class LocalizedDisplayAttribute : DisplayNameAttribute
{
public MultilanguageKeys Key { get; set; }
public IMultilanguageManager MultilanguageManager { get; set; }
public LocalizedDisplayAttribute(IMultilanguageManager multilanguageManager)
{
this.MultilanguageManager = multilanguageManager;
}
public override string DisplayName
{
get
{
// Run some business
return GetCustomAttribute(Key);
}
}
private string GetCustomAttribute(MultilanguageKeys key)
{
int multiLanguageId = 3;
MultiLanguageDictionaryInfo multiLanguageDictionary = MultilanguageManager.DictionaryList()
.Where(t => t.Key == key.ToString())
.Where(t => t.MultilanguageId == multiLanguageId)
.FirstOrDefault();
return multiLanguageDictionary.Value;
}
}
正如您提到的,属性类是由.NETFramework创建的,所以我认为不可能自动进行依赖项注入,您需要手动注入 使用此解决方案向构造的对象注入属性:
您必须重写ControllerActionInvoker类和InvokeActionMethodWithFilters方法,在这里您可以使用windsor将依赖项注入到实例化对象上 编辑:意识到这是针对mvc的,不知道如何在webforms环境中进行