簡體   English   中英

如何在類庫ActionFilterAttribute中訪問Unity容器?

[英]How can get access to Unity container in a class library ActionFilterAttribute?

所以,我必須利用統一注入一個web項目UserRepository的接口IUserRepository 我有一個包含自定義ActionFilterAttribute類庫。 此自定義屬性類已用於許多動作。 我想向其中添加一些代碼,以根據用戶檢查數據庫中的值。 為此,我需要訪問UserRepository 我可以使用語句來完成老式方法,並直接訪問UserRepository ,但是我想利用DI並解析IUserRepository 由於ActionFilterAttribute需要一個空的構造函數,如何在自定義屬性類內部訪問Web解析IUserRepository

屬性是元數據對象。 他們不應該參與數據庫訪問。 使用單獨的服務讀取屬性值,然后訪問數據庫。

因此,盡管我決定不讓用戶在custom屬性內部進行檢查,但是允許在custom屬性內部進行注入的解決方案可以在其他地方使用。 我在屬性中有一個屬性:

public IUserRepository UserRepository { get; set; }

在網絡的Global.asax.cs中,我通過屬性注入將其注入:

container.RegisterType<NameOfCustomAttribute>(new InjectionProperty("UserRepository", 
                                        new UserRepository(ConfigurationManager.ConnectionStrings["DBName"].ConnectionString)));

這是一個老問題,但是我發現您可以通過使用actionContext參數來訪問ActionFilterAttribute的依賴項解析,如下所示:

MyFooService myFooService = actionContext.Request.GetDependencyScope().GetService(typeof(MyFooService)) as MyFooService;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM