在 WebApi 中有条件地与 Ninject 绑定

Conditionally binding with Ninject in WebApi

我正在尝试以 Ninject 可以确定控制器版本使用哪个具体 class 并找到适配器的最新版本的方式绑定接口。

控制器和适配器都实现了这个接口:

public interface IVersioned {
    Version Version {get;set;}
}

我想绑定 IMyAdapter 的所有适配器,以便我可以获得最接近控制器版本的适配器。

public class MyController {
    public MyController(IMyAdapter Adapter) {
    }
}

我已经设置了 NinjectDependencyResolver。我尝试使用 Bind().ToMethod(...) 但我无法获取试图获取适配器的控制器。是否有可能找出哪个控制器试图获取适配器。我可以看出它是一个 IMyController,但我无法获取实例,因此我无法获取控制器的版本。

我发现,如果我获得控制器的类型,我可以使用反射从类型 (x.Request.ParentRequest.Service) 中读取静态字段,而不是获取实例。然后,当我找到合适的适配器时,我可以创建一个实例。

编辑:通过使用属性找到了更简单的解决方案。