代码之家  ›  专栏  ›  技术社区  ›  mmssaann

Ninject单例作用域加载

  •  2
  • mmssaann  · 技术社区  · 13 年前

    我对ASP.NET MVC非常陌生,我需要帮助使用Ninject在singleton范围内加载一些类型。

    ---现有代码看起来是----

    List<Type> types = loading some types into list here.
    
    foreach (var type in types.Where(O => O.Name.StartsWith("I")))
    {
        Kernel.Bind(type).To(Type.GetType(type.FullName.Replace(".I", ".")));
    }
    

    我的工作是在singleton范围内绑定这些类型,但我不确定如何做到这一点。

    2 回复  |  直到 13 年前
        1
  •  3
  •   Trevor Pilley    13 年前

    之后 kernel.Bind().To() .InSingletonScope()

        2
  •  3
  •   treze    13 年前

    还可以看看Ninject约定的扩展。这让这样的事情变得容易多了。 例如,你可以这样写。

    kernel.Bind(x =>
    x.FromThisAssembly()
    .SelectAllClasses()
    .Where(types.Contains)
    .BindDefaultInterface()
    .Configure(b => b.InSingletonScope()));
    

    根据你如何获得类型列表,这可能会写得更容易。只需查看wiki上的文档和示例即可。

    https://github.com/ninject/ninject.extensions.conventions/wiki

    推荐文章