IOC容器 Unity 依赖注入!

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: IOC容器 Unity 依赖注入!

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


相关文章
|
12天前
|
Java 测试技术 开发者
IoC容器有什么作用?
【4月更文挑战第30天】IoC容器有什么作用?
32 0
|
12天前
|
Java 测试技术 开发者
Spring IoC容器通过依赖注入机制实现控制反转
【4月更文挑战第30天】Spring IoC容器通过依赖注入机制实现控制反转
22 0
|
12天前
|
Java 开发者 容器
IoC容器如何实现依赖注入?
【4月更文挑战第30天】IoC容器如何实现依赖注入?
21 0
|
12天前
|
XML Java 数据格式
如何配置IoC容器?
【4月更文挑战第30天】如何配置IoC容器?
20 0
|
12天前
|
XML Java 程序员
什么是Spring的IoC容器?
【4月更文挑战第30天】什么是Spring的IoC容器?
20 0
|
4天前
|
监控 Kubernetes Docker
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
【5月更文挑战第9天】本文探讨了Docker容器中应用的健康检查与自动恢复,强调其对应用稳定性和系统性能的重要性。健康检查包括进程、端口和应用特定检查,而自动恢复则涉及重启容器和重新部署。Docker原生及第三方工具(如Kubernetes)提供了相关功能。配置检查需考虑检查频率、应用特性和监控告警。案例分析展示了实际操作,未来发展趋势将趋向更智能和高效的检查恢复机制。
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
|
18小时前
|
存储 安全 开发者
如何删除 Docker 镜像、容器和卷?
【5月更文挑战第11天】
7 2
如何删除 Docker 镜像、容器和卷?
|
2天前
|
NoSQL Redis Docker
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
13 0
|
4天前
|
存储 安全 数据库
【Docker 专栏】Docker 容器内应用的状态持久化
【5月更文挑战第9天】本文探讨了Docker容器中应用状态持久化的重要性,包括数据保护、应用可用性和历史记录保存。主要持久化方法有数据卷、绑定挂载和外部存储服务。数据卷是推荐手段,可通过`docker volume create`命令创建并挂载。绑定挂载需注意权限和路径一致性。利用外部存储如数据库和云服务可应对复杂需求。最佳实践包括规划存储策略、定期备份和测试验证。随着技术发展,未来将有更智能的持久化解决方案。
【Docker 专栏】Docker 容器内应用的状态持久化
|
4天前
|
机器学习/深度学习 监控 Kubernetes
【Docker 专栏】Docker 容器内服务的自动扩展与缩容
【5月更文挑战第9天】本文探讨了Docker容器服务的自动扩展与缩容原理及实践,强调其在动态业务环境中的重要性。通过选择监控指标(如CPU使用率)、设定触发条件和制定扩展策略,实现资源的动态调整。方法包括云平台集成和使用Kubernetes等框架。实践中,电商平台和实时数据处理系统受益于此技术。注意点涉及监控数据准确性、扩展速度和资源分配。未来,智能算法将提升扩展缩容的效率和准确性,成为关键技术支持。
【Docker 专栏】Docker 容器内服务的自动扩展与缩容