NInject 提供商内部的具体 class 信息
NInject concrete class information inside a provider
我有一个摘要class:
[Configuration]
public abstract class AbstractAddon : IAddon
{
private readonly object configuration;
public AbstractAddon(object configuration)
{
this.configuration = configuration;
}
}
还有几个实现。
我按照约定创建绑定:
public class AddonsModule : Ninject.Modules.NinjectModule
{
public override void Load()
{
this.Bind(b => b.FromAssembliesMatching("*")
.SelectAllClasses()
.InheritedFrom(typeof(UIExtensibility.AbstractAddon))
.BindAllBaseClasses()
.Configure(c => c.InSingletonScope())
);
this.Bind<object>().ToProvider<ConfigurationProvider>().WhenClassHas<UIExtensibility.ConfigurationAttribute>();
}
和ConfigurationProvider
是:
private class ConfigurationProvider : IProvider<object>
{
public object Create(IContext context)
{
return "configuration settings";
}
//...
}
在 ConfigurationProvider
的 Create
方法中,我想我可能会被允许访问具体的 class 请求。
每个具体 class 都有一个属性 PluginInformation
我需要它来提供正确的配置对象。但是,我不知道如何知道 class NInject 在执行 Create
方法提供程序时创建的具体内容。然后,我无法获得我需要 link 的 PluginInformation
属性并提供正确的配置对象。
在执行 object
提供程序时,我如何才能访问具体的 class NInject 请求?
问题在于,在 IContext
上下文参数信息的第一级,只有根据它提供的 Type
的信息,在我的例子中是:object
类型。
但是 IContext
带有完整的父项和计划上下文。因此,在执行提供者的Create
方法时,解决了一些分支问题,例如:AbstractAddon
。每个已解决的信息都在 'Context' 中,例如 IContext
字段。此外,未来的步骤在“计划”上,例如IContext
字段。
所以,为了得到具体的类型(继承类 of AbstractAddon),我需要阅读下一个属性:context.Request.ParentContext.Plan.Type
.
我有一个摘要class:
[Configuration]
public abstract class AbstractAddon : IAddon
{
private readonly object configuration;
public AbstractAddon(object configuration)
{
this.configuration = configuration;
}
}
还有几个实现。 我按照约定创建绑定:
public class AddonsModule : Ninject.Modules.NinjectModule
{
public override void Load()
{
this.Bind(b => b.FromAssembliesMatching("*")
.SelectAllClasses()
.InheritedFrom(typeof(UIExtensibility.AbstractAddon))
.BindAllBaseClasses()
.Configure(c => c.InSingletonScope())
);
this.Bind<object>().ToProvider<ConfigurationProvider>().WhenClassHas<UIExtensibility.ConfigurationAttribute>();
}
和ConfigurationProvider
是:
private class ConfigurationProvider : IProvider<object>
{
public object Create(IContext context)
{
return "configuration settings";
}
//...
}
在 ConfigurationProvider
的 Create
方法中,我想我可能会被允许访问具体的 class 请求。
每个具体 class 都有一个属性 PluginInformation
我需要它来提供正确的配置对象。但是,我不知道如何知道 class NInject 在执行 Create
方法提供程序时创建的具体内容。然后,我无法获得我需要 link 的 PluginInformation
属性并提供正确的配置对象。
在执行 object
提供程序时,我如何才能访问具体的 class NInject 请求?
问题在于,在 IContext
上下文参数信息的第一级,只有根据它提供的 Type
的信息,在我的例子中是:object
类型。
但是 IContext
带有完整的父项和计划上下文。因此,在执行提供者的Create
方法时,解决了一些分支问题,例如:AbstractAddon
。每个已解决的信息都在 'Context' 中,例如 IContext
字段。此外,未来的步骤在“计划”上,例如IContext
字段。
所以,为了得到具体的类型(继承类 of AbstractAddon),我需要阅读下一个属性:context.Request.ParentContext.Plan.Type
.