将配置传递给 Ninject
Passing configuration to Ninject
我需要将 IConfiguration 传递到我的 DbClient class 并且我的存储库依赖于此 DbClient。我无法让它工作。
我的数据库客户端:
public class DbClient
{
public DbClient(IConfiguration config)
{
// Perform some initialization
}
}
我的存储库依赖于 DbClient:
public class MyRepository : IMyRepository
{
private DbClient _client;
public MyRepository(DbClient client)
{
_client = client;
}
}
我的绑定class
public class NinjectBindings : NinjectModule
{
public override void Load()
{
Bind<DbClient>().To<DbClient>(); // ?? Not sure about this
Bind<IMyRepository>().To<MyRepository>();
}
}
我的控制台应用程序中的 Main:
static void Main()
{
var config = new Configuration();
config.AddJsonFile("settings.json");
var kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
var myRepository = kernel.Get<IMyRepository>();
}
我错过了什么?我需要做什么才能将 IConfiguration 传递到 DbClient 并确保存储库正确初始化?
您需要绑定IConfiguration
.
你可以在 Load
方法中做到这一点:
Bind<IConfiguration>().ToMethod(ctx =>
{
var config = new Configuration();
config.AddJsonFile("settings.json");
return config;
});
或者在Main
方法中:
kernel.Bind<IConfiguration>().ToMethod(...);
绑定类型取决于您的需要。也许您应该将配置绑定为不依赖上下文的常量。
另外行 Bind<DbClient>().To<DbClient>();
不是必需的,因为 DbClient
会自动绑定到自己。
我需要将 IConfiguration 传递到我的 DbClient class 并且我的存储库依赖于此 DbClient。我无法让它工作。
我的数据库客户端:
public class DbClient
{
public DbClient(IConfiguration config)
{
// Perform some initialization
}
}
我的存储库依赖于 DbClient:
public class MyRepository : IMyRepository
{
private DbClient _client;
public MyRepository(DbClient client)
{
_client = client;
}
}
我的绑定class
public class NinjectBindings : NinjectModule
{
public override void Load()
{
Bind<DbClient>().To<DbClient>(); // ?? Not sure about this
Bind<IMyRepository>().To<MyRepository>();
}
}
我的控制台应用程序中的 Main:
static void Main()
{
var config = new Configuration();
config.AddJsonFile("settings.json");
var kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
var myRepository = kernel.Get<IMyRepository>();
}
我错过了什么?我需要做什么才能将 IConfiguration 传递到 DbClient 并确保存储库正确初始化?
您需要绑定IConfiguration
.
你可以在 Load
方法中做到这一点:
Bind<IConfiguration>().ToMethod(ctx =>
{
var config = new Configuration();
config.AddJsonFile("settings.json");
return config;
});
或者在Main
方法中:
kernel.Bind<IConfiguration>().ToMethod(...);
绑定类型取决于您的需要。也许您应该将配置绑定为不依赖上下文的常量。
另外行 Bind<DbClient>().To<DbClient>();
不是必需的,因为 DbClient
会自动绑定到自己。