原文地址:http://www.cnblogs.com/ruinet/archive/2010/03/16/1686480.html
Unity是微软模式与实践团队开发的一个轻量级、可扩展的依赖注入容器。官方主页是:http://www.codeplex.com/unity,最新版本是1.2,包括在Microsoft Enterprise Library中。
使用实例:
为了接下来的使用,准备接口和类:
public interface ILogger
{
void Write(string message);
}
public class TextFileLogger:ILogger
{
public void Write(string message)
{
Console.WriteLine("Writed Log To File:\t" +message);
}
}
public class DatabaseLogger:ILogger
{
public void Write(string message)
{
Console.WriteLine("Writed Log To Database:\t" + message);
}
}
{
void Write(string message);
}
public class TextFileLogger:ILogger
{
public void Write(string message)
{
Console.WriteLine("Writed Log To File:\t" +message);
}
}
public class DatabaseLogger:ILogger
{
public void Write(string message)
{
Console.WriteLine("Writed Log To Database:\t" + message);
}
}
创建容器:
class Program
{
static void Main(string[] args)
{
IUnityContainer container = new UnityContainer();
}
}
一个容器中也可包括多个子容器
class Program
{
static void Main(string[] args)
{
IUnityContainer parentContainer = new UnityContainer();
UnityContainer childContainer =parentContainer.CreateChildContainer();
}
}通过代码方式注册对象到容器:
//创建容器
IUnityContainer container = new UnityContainer();
//向容器中注册对象
container.RegisterType<ILogger, TextFileLogger>(); //默认对象
container.RegisterType<ILogger, DatabaseLogger>("DatabaseLogger");
ILogger logger = container.Resolve<ILogger>();
logger.Write(" hello Unity");
ILogger textlogger = container.Resolve<ILogger>("DatabaseLogger");
textlogger.Write(" hello Unity");
//遍历输出已注册的ILogger接口对象
foreach (object mapping in container.ResolveAll<ILogger>())
{
Console.WriteLine(mapping.GetType());
}