IOC容器 Unity 依赖注入!

5 篇文章 0 订阅

首先在.NET上添加NUGet程序包,在解决方案上单击右键。如下图

接着下载这个并安装上:

只要安装成功,就可以直接使用了。

下面来给你写上一个展示的代码:

using Microsoft.Practices.Unity.Configuration;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Unity;

namespace IOCDemo1
{
    class Program
    {
        static void Main(string[] args)
        {
			ContainerCodeTest1();

		}
		public static void ContainerCodeTest1()
		{
			IUnityContainer container = new UnityContainer();

			//默认注册(无命名),如果后面还有默认注册会覆盖前面的
			container.RegisterType<IClass, CbClass>();

			//命名注册
			container.RegisterType<IClass, EcClass>("ec");

			//命名注册
			container.RegisterType<IClass, EeClass>("Ee");

			//解析默认对象
			IClass cbClass = container.Resolve<IClass>();
            Console.WriteLine(cbClass.ShowInfo("4")); 

			//指定命名解析对象
			IClass ecClass = container.Resolve<IClass>("ec");
			ecClass.ShowInfo("4");

			//指定命名解析对象
			IClass eeClass = container.Resolve<IClass>("Ee");
			eeClass.ShowInfo("4");

			获取容器中所有IClass的注册的已命名对象
			//IEnumerable<IClass> classList = container.ResolveAll<IClass>();
			//foreach (var item in classList)
			//{
			//	item.ShowInfo("4");
			//}
		}
	}
	/// <summary>
	/// 班级接口
	/// </summary>
	public interface IClass
	{
		string ClassName { get; set; }

		string ShowInfo(string s);
	}
	/// <summary>
	/// 计科班
	/// </summary>
	public class CbClass : IClass
	{
		public string ClassName { get; set; }

		public string ShowInfo(string s)
		{
			Console.WriteLine("计科班:{0}", ClassName);
			Console.ReadLine();
			return s;
		}
	}
	/// <summary>
	/// 电商班
	/// </summary>
	public class EcClass : IClass
	{
		public string ClassName { get; set; }

		public string ShowInfo(string s)
		{
			Console.WriteLine("电商班:{0}", ClassName);
			Console.ReadLine();
			return s;
		}
	}
	public class EeClass : IClass
    {
		public string ClassName { get; set; }
		public string  ShowInfo(string s)
        {
            Console.WriteLine("电商版:{0}",ClassName);
			Console.ReadLine();
			return s;
        }
    }
}

配置文件的内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<configSections>
		<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration"/>
	</configSections>
	<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
		<!--定义类型别名-->
		<aliases>
			<add alias="IClass" type="ConsoleApplication1.UnityDemo.IClass,ConsoleApplication1" />
			<add alias="CbClass" type="ConsoleApplication1.UnityDemo.CbClass,ConsoleApplication1" />
			<add alias="EcClass" type="ConsoleApplication1.UnityDemo.EcClass,ConsoleApplication1" />
		</aliases>
		<!--容器-->
		<container name="FirstClass">
			<!--映射关系-->
			<register type="IClass"  mapTo="CbClass"></register>
			<register type="IClass" name="ec" mapTo="EcClass"></register>
		</container>
	</unity>
</configuration>

 这个方法只是一种简单的引用关系,非常简便的使用上unity,还有其它的几种方式,目前小编还不会,等学会了再来更新内容。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李金轩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值