依赖注入的理解

实际业务中,new 应该是自己创造的。而买来的应该从外部传入进来
依赖注入容器

  • 这就是一个容器,用来存储数据,可以用来存储属性
internal class BreakfastMaker
    {
        //从零开始写一个依赖注入容器
        static void Main(string[] args)
        {
            _container = new Container();

            //初始化
            Init();

            Use();
        }

        private static void Use()
        {
            //Foo foo = (Foo)_container.Get(typeof(Foo));
            //使用改造的泛型
            Foo foo = _container.Get<Foo>();
            Console.WriteLine(foo.Name);
        }

        private static void Init()
        {
            Foo foo = new Foo();
            //使用泛型 这里的<Foo>也可以去掉,因为传入参数foo可以自己推出来
            _container.Set<Foo>(foo);
            //_container.Set(typeof(Foo), foo);
        }

        //
        //静态方法只能使用静态字段
        //
        private static Container _container;
    }

    //
    // 定义一个类,这个类仅仅用来测试
    //
    public class Foo
    {
        public string Name { get; set; }
    }


    //类似哆啦A梦的口袋,可以存进很多东西,需要的时候随时能拿
    public class Container
    {
        //
        //定义一个泛型
        //
        public void Set<T>(T obj)
        {
            Set(typeof(T), obj);
        }

        public void Set(Type type,object obj)
        {
            InnerDictionary[type] = obj;
        }

        //
        //改造成一个泛型的方法
        //
        public T Get<T>()
        {
            return (T)Get(typeof(T));
        }

        public object Get(Type type)
        {
            return InnerDictionary[type];
        }

        //
        // 存放
        // 只有get意味着建立后不能被修改
        //
        private Dictionary<Type, object> InnerDictionary { get; } = new Dictionary<Type, object>();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值