我使用一個注入BLL服務的頁面:一個簡單的服務返回一組對象的使用這樣的功能:ASP.NET:依賴注入和角色
public IMyService { List<Foo> All(); }
沒有爲普通用戶的默認實現。 現在,我需要具有管理角色的用戶可以查看更多對象,並使用另一個服務實現。
我在哪裏可以配置我的頁面使用第二個實現?
我的第一個解決方案是將依賴於IUnityContainer的頁面,並用它來解決依賴關係:
[Dependency]
public IUnityContainer Container { get; set;}
Page_Init(..)
{
_myService = User.IsInRole(MyRoles.Administrators)
? Container.Resolve<IMyService>("forAdmins")
: Container.Resolve<IMyService>();
}
但它是非常難看:這是一個服務定位器,它是沒有可擴展的既不測試。
我該如何處理這種情況?也許爲每個角色創建一個子容器?
一如既往,很好! +1 – Steven 2010-07-20 10:08:36