Ninject数组绑定

时间:2013-03-08 12:22:34

标签: wpf inversion-of-control ninject

我正在尝试将Ninject与WPF一起使用

我的所有观点都有相同的界面

interface IView
{
  string ViewName { get; }
  object Content{ get; private set; } 
}

public partial class FirstView : IView
{
    ......
}
public partial class SecundView : IView
{
  ......
}

等。

在应用程序启动时我使用

绑定它们
Kernel.Bind<IView>().To<FirstView>();
Kernel.Bind<IView>().To<SecundView>();
........
........

我感兴趣的是有没有办法按惯例注册它们? 类似的东西:

.Kernel.Bind(
            x => x.FromThisAssembly()
                  .SelectAllClasses().InNamespaceOf<FirstView>()
                  .BindToInterface<IView>);

1 个答案:

答案 0 :(得分:2)

您可以使用BindDefaultInterfaces()方法,该方法会将名称中包含View字的每个类绑定到您的IView界面:

.Kernel.Bind(
    x => x.FromThisAssembly()
          .SelectAllClasses().InNamespaceOf<FirstView>()
          .BindDefaultInterfaces());

您还可以查看可用的“BindSomething”选项in the documentation