通过ToMethod将接口绑定到带参数的方法

Igo*_*rek 7 ninject

我认为我正在寻找的东西非常简单,但我找不到任何例子.我想使用Ninject创建一个对象,方法是让Ninject调用一个带有指定参数的工厂方法,而不是在实际请求实例化对象期间注入:

在这里请求一个对象:

StandardKernel.Get<ISomeInteface>(new Ninject.Parameters.Parameter("dataContext", dataContext, true));
Run Code Online (Sandbox Code Playgroud)

我想将ISomeInterface映射到一个方法,该方法期望在运行时将值传递给它.

在此处映射接口:

Kernel.Bind<ISomeInterface>().ToMethod(SomeObject.Create(--> `what do I put here?`));
Run Code Online (Sandbox Code Playgroud)

这可能吗?如果是这样,我该如何正确映射我的界面?谢谢!

Rem*_*oor 6

ToMethod(ctx => 
    SomeObject.Create(
        (IDataContext)ctx.Parameters.Single(p =>p.Name == "dataContext")
        .GetValue(ctx, null))
Run Code Online (Sandbox Code Playgroud)

但是你应该重新考虑你的设计,以避免Get从复合根以外的任何地方打电话.