C# 向属性注入一些依赖项

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

我正在开发一个多语言网站。我的显示多语言文本的解决方案基于以下本地化的Ddisplayattribute类。我想给这个类注入一些依赖项,但是这个类是由.Net Framework实例化的。容器如何在不使用服务定位器的情况下注入依赖关系

这是我的代码块

[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环境中进行