我需要将IConfiguration传递给我的DbClient类,我的存储库依赖于这个DbClient。我无法让它发挥作用。
我的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;
}
}
My Bindings 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并确保存储库正确初始化,我需要做什么?
答案 0 :(得分:1)
您需要绑定IConfiguration
您可以在Load
方法中执行此操作:
Bind<IConfiguration>().ToMethod(ctx =>
{
var config = new Configuration();
config.AddJsonFile("settings.json");
return config;
});
或Main
方法:
kernel.Bind<IConfiguration>().ToMethod(...);
绑定类型取决于您的需要。也许你应该将config绑定为常量,而不依赖于上下文。
也不需要行Bind<DbClient>().To<DbClient>();
,因为DbClient
会自动绑定到自己。