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

时间:2011-09-29 08:07:41

标签: ninject

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

在此请求对象:

StandardKernel.Get<ISomeInteface>(new Ninject.Parameters.Parameter("dataContext", dataContext, true));

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

在此处映射界面:

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

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

1 个答案:

答案 0 :(得分:6)

ToMethod(ctx => 
    SomeObject.Create(
        (IDataContext)ctx.Parameters.Single(p =>p.Name == "dataContext")
        .GetValue(ctx, null))

但是你应该重新考虑你的设计,以避免从复合词根以外的任何地方调用Get