ninject - 是否有办法获取实例注入(inject)的类名(使用 ninject)?

标签 ninject

我可以将依赖项注入(inject)到我的类中,但我想知道是否可以获得我要注入(inject)的类名?

例如:

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

所以,如果我有:

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

当注入(inject) Ninject 时,实际上会调用:

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

这可以做到吗?

最佳答案

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

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

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

private string GetParentTypeName(IContext context)
{
    return context.Request.ParentRequest.ParentRequest.Target.Member.DeclaringType.Name;
}

关于ninject - 是否有办法获取实例注入(inject)的类名(使用 ninject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14459046/

相关文章:

c# - Ninject 在具有多个程序集的 WebApi 项目中抛出激活异常

entity-framework - 在 MVC 5 项目上使用 ASP.NET 标识,但 httpcontext User.ProviderName 为 "AspNetSqlRoleProvider"

c# - ASP.NET Web API 2 和 Ninject - 发现不明确的匹配项

C# 注入(inject) : How to bind to method async

c# - 解决方案 - 实体类型 ApplicationUser 不是当前上下文模型的一部分

c# - 结合 WCF、NHibernate 和 Ninject

asp.net - 服务器上出现错误不能为空参数名称root

asp.net-mvc - 我在哪里可以获得对 ASP.NET MVC 友好的 ninject?

c# - 如何在 ASP.NET MVC 4 中使用 Ninject 从 Web.config 绑定(bind)设置?

xamarin - Ninject StandardKernel System.ArgumentNullException : value cannot be null. 参数名称:path1