首先在.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,还有其它的几种方式,目前小编还不会,等学会了再来更新内容。