当前位置:  开发笔记 > 编程语言 > 正文

在单例后面提取IoC容器 - 做错了吗?

如何解决《在单例后面提取IoC容器-做错了吗?》经验,为你挑选了0个好方法。

通常,我喜欢让应用程序完全不知道IoC容器.但是我遇到了需要访问它的问题.为了消除痛苦,我使用了一个基本的单身人士.在你跑山或拔出霰弹枪之前,让我回顾一下我的解决方案.基本上,IoC单例绝对没有任何东西,它只是委托给必须传入的内部接口.我发现这使得使用Singleton减少痛苦.

下面是IoC包装器:

public static class IoC
    {
        private static IDependencyResolver inner;

        public static void InitWith(IDependencyResolver container)
        {
            inner = container;
        }

        /// Container has not been initialized.   Please supply an instance if IWindsorContainer.
        public static T Resolve()
        {
            if ( inner == null)
                throw new InvalidOperationException("Container has not been initialized.  Please supply an instance if IWindsorContainer.");

            return inner.Resolve();
        }

        public static T[] ResolveAll()
        {
            return inner.ResolveAll();
        }
    }

的IDependencyResolver:

public interface IDependencyResolver
    {
        T Resolve();
        T[] ResolveAll();
    }

到目前为止,我已经取得了很大的成功,我曾经几次使用它(也许每一个项目一次,我真的不想一直使用它),因为我可以注入任何我想要的东西:城堡,Stub,假货,等等

这是一条湿滑的路吗?我是否会遇到潜在的问题?

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有