小结:c#Constructor构造函数注入

来源:互联网 发布:上海索昂软件 编辑:程序博客网 时间:2024/05/22 01:26


1、创建接口

 public interface ITimeProvider    {        DateTime CurrentDate { get; }        string CurrentYear { get; }    }

2、继承接口,实现类

 public class TimeProvider : ITimeProvider    {        public DateTime CurrentDate { get { return DateTime.Now; } }        public string CurrentYear { get { return DateTime.Now.Year.ToString(); } }    }

3、创建注入机制

 public class Assembler    {        private static Dictionary<Type, Type> dictionary = new Dictionary<Type, Type>();        public Assembler()        {            dictionary.Add(typeof(ITimeProvider), typeof(TimeProvider));        }        public object Create(Type type)        {            if (type == null || !dictionary.ContainsKey(type)) throw new NullReferenceException();            Type targetType = dictionary[type];            return Activator.CreateInstance(targetType);        }        public T Create<T>()        {            return (T)Create(typeof(T));        }    }

4、客户端调用

  public class Client    {        private ITimeProvider timeProvider;        public Client(ITimeProvider timeProvider)        {            this.timeProvider = timeProvider;        }        public string GetYear()        {            return timeProvider.CurrentYear .ToString();        }        public string GetDatetime()        {            return timeProvider.CurrentDate.ToString();        }    }

5、使用实现

     ITimeProvider timeProvider = (new Assembler()).Create<ITimeProvider>();            Client clinet = new Client(timeProvider);            Console.WriteLine(clinet.GetYear());            Console.WriteLine(clinet.GetDatetime());



0 0