如何从Ninject中的IContext中提取关于作为注入目标的对象的确切类型的信息
本文关键字:目标 注入 对象 信息 类型 于作 Ninject 中的 IContext 提取 | 更新日期: 2023-09-27 18:27:30
在我的应用程序中,有必要创建接口的实现,这些实现取决于它们所使用的对象的类型。为此,我决定实现SimpleProvider的后代,根据经典的Ninject示例,它应该是:
public class MyProvider: Provider<IWeapon>
{
protected override IWeaponCreateInstance(IContext context)
{
//if the weapon user is of type samurai
{
return new Katana();
}
//if the weapon user implements IHorseman
{
return Kernel.Get<IHorsemanWeapon>();
}
return new Sword;
}
}
在我的特定情况下,我想使用LogManager.GetLogger(类型.FullName)。对我来说,问题是缺乏对IContext的全面描述,或者我找不到它,所以我不知道如何从中获取类型。
您可以使用IContext.Request.Target
:获得注射目标
public class MyProvider: Provider<IWeapon>
{
protected override IWeaponCreateInstance(IContext context)
{
if (context.Request.Target.Type == typeof(Samurai))
{
return new Katana();
}
if (typeof(IHorseman).IsAssignableFrom(context.Request.Target.Type))
{
return Kernel.Get<IHorsemanWeapon>();
}
return new Sword;
}
}
您可以阅读有关上下文绑定的更多信息。