[英]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.