我們的工作倉庫一般都是CRUD,分爲ICreatable
,IRetrievable
,IUpdatable
和IDeletable
各一個。檢索行爲在檢索中使用對象的PK。通常,我們最終會得到另一個子接口來處理倉庫CRUD行爲之外的方法。它看起來像這樣:如何使StructureMap自動註冊基礎接口?
public interface IUserRepository : ICreatable<User>, IRetrievable<User>, IUpdatable<User>
{
IEnumerable<User> GetUsersWithoutEmail();
}
public class UserRepository : IUserRepository
{
// implement members...
}
在地方,我們特別需要GetUsersWithoutEmail
,我們將注入IUserRepository。其他需要IRetrievable<User>
的地方當前得到IUserRepository
,因爲我不知道如何解決這個問題。
我想什麼,能夠做的就是類似這樣的東西:
ObjectFactory.Initialize (x => x.For<IUserRepository>().IncludeBaseInterfaces().Use <UserRepository>());
我想UserRepository
注射時,我問一個IUserRepository
或的IRetrievable<User>
,而無需配置每個的4個手動。如果我決定代替ICreatable<User>
而不是CreatableUserRepository
,我希望能夠覆蓋一個,但通常我只是希望它儘可能地在樹上走。
這是可行的嗎?