2

我将我的依赖项注入到我的类中很好,但我想知道是否有可能获得我要注入的类名?

例如:

Bind<ISomething>.ToMethod(c => new Something([GIVE INJECTING *TO* CLASS NAME]));

所以,如果我有:

public class Blah{
  public Blah(ISomething something) { /**/ }
}

当注入 Ninject 时会调用:

new Blah(new Something("Blah"));

这可以做到吗?

4

2 回答 2

3

是的,这是可以做到的。您可以使用方法中IContext给出的ToMethod方法来获取要注入的类型的名称,如下所示:

Bind<ISomething>().ToMethod(c => new Something(GetParentTypeName(c)));

它使用了这个小助手方法(也可以变成一个很好的扩展方法):

private string GetParentTypeName(IContext context)
{
    return context.Request.ParentRequest.ParentRequest.Target.Member.DeclaringType.Name;
}
于 2013-01-22T13:03:49.747 回答
0

它可能在 Ninject 的更高版本中发生了变化。至于 v3.2.0 版本,接受的解决方案对我不起作用。

以下内容虽然:

Bind<ISomething>().ToMethod((ctx) 
       => new Something(ctx.Request.Target?.Member?.DeclaringType?.Name ?? ""));
于 2017-06-21T09:23:46.497 回答