您的位置:首页 > 移动开发 > Unity3D

(转)Microsoft.Practices.Unity依赖注入使用实例

2010-11-01 17:48 477 查看
原文地址: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);
}
} 创建容器:

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();
}
}

[/code]
通过代码方式注册对象到容器:

[/code]

代码
IUnityContainer container = new UnityContainer();

UnityConfigurationSection config = ConfigurationManager.GetSection("unity") as UnityConfigurationSection;
config.Containers.Default.Configure(container);

ILogger defaultLogger = container.Resolve<ILogger>();
defaultLogger.Write(" hello Unity!");

ILogger databaseLogger = container.Resolve<ILogger>("databaseLogger");
databaseLogger.Write(" hello Unity!");
Console.WriteLine(databaseLogger.GetHashCode());

//第二次获取注册的实例,比较两次的获取的对象是否相同
ILogger databaseLogger2 = container.Resolve<ILogger>("databaseLogger");
databaseLogger.Write(" hello Unity!");
Console.WriteLine(databaseLogger2.GetHashCode());
运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: