我有一个应用程序,我不知道 Controller 可能需要预先(在构建 Controller 时)的完整存储库列表。 Controller 从数据库中获取要呈现的“组件”列表,然后需要哪些额外的存储库取决于数据库返回的“组件”。有没有办法注入(inject)这些存储库?我正在使用 ninject,尽管它可能并不重要。
最佳答案
使您的存储库成为组件中的依赖项。大多数 IOC 软件(如 Ninject)会在您解析对象时为对象注入(inject)所有必需的依赖项。
例如:
public class ComponentA : IComponent
{
public IRepository RepositoryA {get;set;}
}
public class ComponentB : IComponent
{
public IRepository RepositoryAnother {get;set;}
}
每当您加载 ComponentA 或 B 时,它的依赖项(在本例中为 IRepository)也应该被加载。
所以你不需要知道需要什么 Repository。
关于c# - 当在 Controller 构造时不知道存储库时,如何在 Controller 中注入(inject)存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22443463/