小结:c# setter属性注入
2016-07-23 19:37
465 查看
1、创建接口
2、继承接口,实现类
3、创建注入机制
4、客户端调用
5、使用实现
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 { public ITimeProvider timeProvider { get; set; } public string GetYear() { return timeProvider.CurrentYear .ToString(); } public string GetDatetime() { return timeProvider.CurrentDate.ToString(); } }
5、使用实现
ITimeProvider timeProvider = (new Assembler()).Create<ITimeProvider>(); Client client= new Client(); client.timeProvider = timeProvider; Console.WriteLine(clinet.GetYear()); Console.WriteLine(clinet.GetDatetime());
相关文章推荐
- 小结:c#Constructor构造函数注入
- C# 打造文件加密解密工具
- C#使用Log4Net记录日志
- C#和PHP Socket通信实例代码(服务器与客户端通信)
- C#基础之枚举
- C#中的垃圾回收
- c# listbox 实现datatable 绑定
- 【转】c# winform 打包部署 自定义界面 或设置开机启动
- 【转】C#程序打包安装部署之添加注册表项
- 【转】C# Winform打包部署时添加注册表信息实现开机启动
- C# BackGroundWorker
- 在WinForms中使用MD皮肤
- 使用WinDbg —— .NET篇 (十一)
- C#编写媒体播放器--Microsoft的Directx提供的DirectShow组件,该组件的程序集QuartzTypeLib.dll.
- csharp数据库安全
- C# Winform跨线程设置button的visibility
- C# 秒数转日期_由秒数得到日期几天几小时_当前日期时间,转换为秒
- 【C#】33. 使用XAPI进行程序化交易
- C#读取XML文件中有乱码的处理办法
- 利用C#自带组件强壮程序日志