做一个网站的建设过程,北京专业网站建设网站推广,江苏中兴建设有限公司网站,宁波市住房和城乡建设部网站在之前的一篇文章“Unity(三)#xff1a;快速入门”中#xff0c;给出了一个简单的示例#xff0c;让我们对Unity有一个感性的认识。但是#xff0c;Unity到底是做什么用的呢#xff1f;一个简单示例并不能解答这个问题。 总的来看#xff0c;Unity的使用场景主要有以下几… 在之前的一篇文章“Unity(三)快速入门”中给出了一个简单的示例让我们对Unity有一个感性的认识。但是Unity到底是做什么用的呢一个简单示例并不能解答这个问题。 总的来看Unity的使用场景主要有以下几个 建立类型映射 用于单例模式 用于依赖注入 接下来将逐一介绍各使用场景。 在创建对象时毫无疑问类型映射是我们无法回避的一个问题同时也是一系列工厂模式的根本出发点。类型映射为面向对象设计的根本原则——“针对接口编程而不是针对实现编程”、“要依赖抽象不要依赖具体类”——在应用中的实现提供了有力的支持。 我们知道Unity提供了对象的容器那么这个容器是如何进行索引的呢也就是说容器内的单元是如何标识的呢在Unity中标识主要有两种方式一种是直接使用接口或者基类作为标识键另一种是使用接口或者基类与名称的组合作为标识键。键对应的值就是具体类。 用接口类型作为标识键 实际上之前的“Unity(三)快速入门”中给出的例子就是接口类型作为标识键的一个使用场景这里就不再重复。 这里需要指出的是Unity提供的功能都有泛型和非泛型两个版本这样可以确保 Unity 在不支持泛型的环境中使用。我们在代码中可以使用任意一种方法泛型和非泛型或者根据需要混合使用。例如可以使用泛型形式来注册映射然后使用非泛型形式去获取对象实例 下面的代码演示了非泛型形式的使用 ps接下来的例子以及后续文章中的例子将不再演示非泛型形式的使用。 用基类作为标识键 用基类作为标识键在本质上与用接口类型作为标识键是一样的。这里需要注意的是基类并不一定是指抽象类。下面是使用基类作为标识键的例子 有趣的是这里如果直接container.RegisterTypeLogger, Logger();的话是可以Resolve出来的但是如果我们container.RegisterTypeILogger, ILogger();的话运行时就会报异常用接口或基类与名称的组合作为标识键 如果需要使用同样的接口或基类注册多个映射可以指定名称来区分每个映射。在需要Resolve的时候通过指定接口或基类与名称的组合作为标识键就可以获取恰当类型的对象。下面的例子以接口与名称的组合为例基类与名称的组合作为标识键同理不再赘述有关Ilogger等代码见“Unity(三)快速入门”中给出的准备代码。 这里需要指出的是注册名称是一个字符串如果需要可以包含空格。它们是大小写敏感的。例如名称“Mymapping”和“MyMapping”将指的是二个不同的注册映射。 了。 转载于:https://www.cnblogs.com/wukong0214/archive/2013/01/21/2870356.html