ASP核心 - 控制器强制参数

时间:2018-05-17 15:10:41

标签: c# asp.net asp.net-core dependency-injection

我正在构建一个需要更通用的库。所以我的控制器非常简单

public class AdminController : Controller
{
    object _repo;
    public AdminController(object repo)
    {
        _repo = repo;
    }

    ...
}

现在我想告诉我的webapp中的ASP将此控制器与Repository类一起使用,而不需要Repository继承接口。

好的,如果您需要实例化AdminController对象,只需像对需要存储库参数的其他控制器一样传递存储库。

我已经尝试在Startup.cs文件中执行此操作但不执行任何操作

services.AddScoped<AdminController>(c => {
    Console.WriteLine("We need you");
    return new AdminController(c.GetService<IRepository>());
});

1 个答案:

答案 0 :(得分:0)

也许仿制药可以帮到你?

public class AdminController<T> : Controller
{
    private readonly T _repo;

    public AdminController(T repo)
    {
        _repo = repo;
    }

    ...
}

services.AddScoped<AdminController<IRepository>>(c => {
    Console.WriteLine("We need you");
    return new AdminController<IRepository>(c.GetService<IRepository>());
});