c# - 当在 Controller 构造时不知道存储库时,如何在 Controller 中注入(inject)存储库?

标签 c# asp.net .net asp.net-mvc asp.net-mvc-5

我有一个应用程序,我不知道 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/

相关文章:

c# - 特定 ASP.NET MVC4 URL 的自定义配置设置

c# - 为什么使用 HttpWebResponse 时会收到错误请求(代码 400)?

c# - 单元格中的 Excel XML 换行符

javascript - 当我在标记中包含 jquery.js 时,页面中的其他 javascript 函数不会触发

asp.net - 允许应用程序访问 Azure AD protected URL,无需用户名/密码

c# - 从关系数据库的角度开始使用 Azure 存储

c# - 为什么 .NET 异常没有被 try/catch block 捕获?

c# - Autofac Resolve<IEnumerable<T>>() 返回空列表

c# - Mode=TwoWay、UpdateSourceTrigger=PropertyChanged 或 LostFocus?

c# - 如何从 Windows 服务将文件复制到网络位置?