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";
    }
    //...
}

ConfigurationProviderCreate 方法中,我想我可能会被允许访问具体的 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.