什么是Ninject的Bind <tservice>()。ToMethod的Microsoft.Extensions.DependencyInjection(IServiceCollection)等效项?

时间:2019-05-23 14:11:21

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

我曾经在 Ninject 中做过这样的事情:

kernel.Bind<IDatabase>().ToMethod(context =>
    RedisConnectionFactory.GetConnection().GetDatabase(              
int.Parse(ConfigurationManager.AppSettings["RedisConnectionIdsDatabase"])));

接口 IDatabase绑定到方法。现在,我已切换到 dotnet核心,并且我想知道 dotnet核心依赖注入程序能够做到这一点吗?

2 个答案:

答案 0 :(得分:2)

您可以这样

services.AddTransient<IDatabase>((sp) =>
{
    return RedisConnectionFactory
        .GetConnection().GetDatabase(int.Parse(ConfigurationManager.AppSettings["RedisConnectionIdsDatabase"]));
});

答案 1 :(得分:-1)

不,不是。内置的DI容器非常基础,但是只要它公开IServiceProvider接口,它就可以使用任何您想要的东西。