您的位置:首页 > 编程语言 > C#

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

2016-07-23 18:50 309 查看
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());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: