如何让 Ninject 执行我定义的工厂来创建我的对象?
How do I have Ninject execute a factory I define to create my object?
我可以让 Ninject 执行我定义的工厂以便在下面创建对象 B
吗?
我能想到的一种方法是像这样更改 Foo 的 API:
class Foo
{
public Foo(Bar b) { }
// change API to introduce a new ctor
[Inject]
public Foo(Func<Bar> func) { }
}
class Bar { }
在 Ninject 3.2 中是否有内置的 API 让我这样做?
您可以执行以下操作:
Bind<Bar>().ToMethod(ctx => ... your factory code/call...);
然后将 Bar
注入 foo:
class Foo
{
public Foo(Bar b) { }
}
如果您需要控制创建 Bar
的时间 - 所以如果您的代码需要专门调用工厂 - 您可以使用 Ninject.Extensions.Factory。将 Func<Bar> barFactory
注入您的 Foo
并使用它来创建一个实例。
我可以让 Ninject 执行我定义的工厂以便在下面创建对象 B
吗?
我能想到的一种方法是像这样更改 Foo 的 API:
class Foo
{
public Foo(Bar b) { }
// change API to introduce a new ctor
[Inject]
public Foo(Func<Bar> func) { }
}
class Bar { }
在 Ninject 3.2 中是否有内置的 API 让我这样做?
您可以执行以下操作:
Bind<Bar>().ToMethod(ctx => ... your factory code/call...);
然后将 Bar
注入 foo:
class Foo
{
public Foo(Bar b) { }
}
如果您需要控制创建 Bar
的时间 - 所以如果您的代码需要专门调用工厂 - 您可以使用 Ninject.Extensions.Factory。将 Func<Bar> barFactory
注入您的 Foo
并使用它来创建一个实例。