我正在将我的依赖项注入到我的类中,但是我想知道是否可以获取我正在注入的类名?
例如:
Bind<ISomething>.ToMethod(c => new Something([GIVE INJECTING *TO* CLASS NAME]));
所以,如果我有:
public class Blah{
public Blah(ISomething something) { /**/ }
}
注入Ninject时实际上会调用:
new Blah(new Something("Blah"));
可以这样做吗?
答案 0 :(得分: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;
}
答案 1 :(得分:0)
在Ninject的更高版本中可能已经改变了。对于版本v3.2.0,已接受的解决方案对我不起作用。
但以下情况确实如此:
Bind<ISomething>().ToMethod((ctx)
=> new Something(ctx.Request.Target?.Member?.DeclaringType?.Name ?? ""));