0

多言語 Web サイトを開発しています。次の LocalizedDisplayAttribute クラスに基づいて、多言語テキストを表示するための私のソリューション。このクラスにいくつかの依存関係を挿入したいと思いますが、クラスは .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;

    }

}
4

2 に答える 2

1

ご指摘のとおり、Attribute クラスは .NET フレームワークによって作成されるため、依存性注入を自動的に行うことは不可能だと思います。これを手動で注入する必要があります。

このソリューションを使用して、構築されたオブジェクトにプロパティを注入します。

ウィンザー城 構築されたオブジェクトのプロパティの注入

于 2012-09-11T08:35:35.480 に答える
0

ControllerActionInvoker クラスと、windsor を使用してインスタンス化されたオブジェクトに依存関係を注入できる InvokeActionMethodWithFilters メソッドをオーバーライドする必要があります。

編集:これはmvc用であることに気づきましたが、Webフォーム環境でそれを行う方法がわからない

于 2012-09-11T08:41:22.700 に答える