小编Joh*_*ith的帖子

使用IoC高级功能和自己的抽象

我已经阅读了许多有关在开发中使用IoC容器的有趣文章.在许多情况下,作者建议我们编写自己的简单包装器,它隐藏了读取容器的接口,如Ninject,Castle.Windsor,Unity等.

包装器的实现看起来像这样(对于Ninject):

/// <summary>
/// Contains links for service contract and realization.
/// </summary>
public static class IoC
{
    static readonly IKernel kernel;
    static IoC()
    {
        kernel = new StandardKernel();
    }

    public static void RegisterService<T>(Type service)
    {
        kernel.Bind<T>().To(service);
    }

    public static T Resolve<T>()
    {
        return kernel.Get<T>();
    }
}
Run Code Online (Sandbox Code Playgroud)

好的,但是如何使用此模式的高级功能?例如,我喜欢使用像InRequestScope()或InSingletonScope()这样的生命周期管理修饰符,许多容器都支持这种修饰符.使用上面的模式,我可以丢弃ninject并使用15行实现.区别在哪里?

我还看了一下CommonServiceLocator试图找到丰富的包装器,但它与我的IoC类没有太大区别.现在我认为我不应该制作自己的自行车并直接使用全功能容器.你呢?

.net ninject inversion-of-control

3
推荐指数
1
解决办法
262
查看次数

标签 统计

.net ×1

inversion-of-control ×1

ninject ×1