我需要用Ninject绑定一个PetaPoco数据库对象。在文档(https://github.com/CollaboratingPlatypus/PetaPoco/wiki/Fluent-Configuration)中,为SimpleInjector提供了以下示例:
var container = new SimpleInjector.Container();
container.RegisterSingleton<IDatabaseBuildConfiguration>(DatabaseConfiguration.Build()
.UsingCommandTimeout(180)
.WithAutoSelect()
.WithNamedParams()
.UsingConnectionStringName("myAppsConnection")
.UsingDefaultMapper<ConventionMapper>(), Lifestyle.Transient);
container.Register<IDatabase>(() => container.GetInstance<IDatabaseBuildConfiguration>().Create())
我的其他绑定看起来都如下。
Bind<IRepRepo>().To<RepRepoWeb>().InSingletonScope();
但是我找不到在Ninject中进行绑定的明确方法。
我现在开始工作了。关键是要使用ToMethod。
Bind<IDatabaseBuildConfiguration>().ToMethod(ctx =>
DatabaseConfiguration.Build().UsingCommandTimeout(180)
.WithAutoSelect()
.WithNamedParams()
.UsingProvider<SqlServerDatabaseProvider>()
.UsingConnectionString("xxxx")
).InSingletonScope();
Bind<IDatabase>().ToMethod(ctx =>
ctx.Kernel.Get<IDatabaseBuildConfiguration>()
.Create()
).InSingletonScope();