我认为我正在寻找的东西很简单,但我找不到任何例子。 我想使用Ninject创建一个对象,方法是让Ninject调用一个带有指定参数的工厂方法,而不是在实际请求实例化对象期间注入:
在此请求对象:
StandardKernel.Get<ISomeInteface>(new Ninject.Parameters.Parameter("dataContext", dataContext, true));
我想将ISomeInterface映射到一个期望在运行时传递给它的值的方法。
在此处映射界面:
Kernel.Bind<ISomeInterface>().ToMethod(SomeObject.Create(--> `what do I put here?`));
这可能吗?如果是这样,我该如何正确映射我的界面? 谢谢!
答案 0 :(得分:6)
ToMethod(ctx =>
SomeObject.Create(
(IDataContext)ctx.Parameters.Single(p =>p.Name == "dataContext")
.GetValue(ctx, null))
但是你应该重新考虑你的设计,以避免从复合词根以外的任何地方调用Get
。