学习QFramework 过程中发现对IOC不太了解,就大概百度了一下思路

 将原先类与类之间的相互依赖关系,转移到第三方容器中,

同过读取配置文件来生成对应的依赖关系,将原本类之间的耦合转移到配置文件中。

  这是我大概的一个理解,欢迎大家斧正。

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Xml.Linq;
using UnityEngine; public class Test : MonoBehaviour
{
object user = new object();
private void Start()
{
var container = IoCContainer.GetContainer(); User userIoc = container[" "] as User;
userIoc.Say();
}
} public class User
{
public void Say()
{
Debug.Log(" 抱树");
}
} public class IoCContainer
{
private static Dictionary<string, object> container = new Dictionary<string, object>(); public static Dictionary<string, object> GetContainer()
{
LoadContainer();
return container;
} /// <summary>
/// 加载填充容器
/// </summary>
private static void LoadContainer()
{
//获取项目的根目录的绝对路径 ,
//因为测试时应用生成在'根目录/bin/Debug' 所以需要向上走两个目录
string rootPath = Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory + @"..\..\");
// 加载config文件
XElement xElement = XElement.Load(rootPath + "App.config");
//获取myobjects节点下的子集合
IEnumerable<XElement> items = xElement.Descendants("myobjects").Elements();
//循环实例化节点
foreach (var item in items)
{
//通过反射加载程序集
var assembly = Assembly.LoadFrom(item.Attribute("assembly").Value);
//创建实例
var entity = assembly.CreateInstance(item.Attribute("type").Value);
//添加到容器中
container.Add(item.Attribute("name").Value, entity);
} }
}

C# IOC 个人理解的更多相关文章

  1. IOC的理解

    转载http://www.cnblogs.com/xdp-gacl/p/4249939.html 很不错的文章,虽说是java的,但是.net也通用,所以复制一分,拿来看看挺不错的. 1.1.IoC是 ...

  2. 谈谈对Spring IOC的理解(转)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  3. 谈谈对Spring IOC的理解

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  4. Spring系列之谈谈对Spring IOC的理解

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IOC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  5. 谈谈对Spring IOC的理解【转】

    学习过Spring框架的人 一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大 ...

  6. Spring IOC的理解

            学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理 ...

  7. 谈谈对Spring IOC的理解(转载)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  8. C# 一个初学者对 依赖注入 IOC 的理解( 含 Unity 的使用)

    通过 人打电话 来谈谈自己对IOC的理解 版本1.0 public class Person { public AndroidPhone Phone { get; set; } public void ...

  9. 浅析对spring中IOC的理解

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  10. 依赖注入(DI)和控制反转(IOC)的理解,写的太好了。

    学习过spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

随机推荐

  1. Vue3.0 实现数据双向绑定的方法

    ue3.0 是通过Proxy实现的数据双向绑定,Proxy是ES6中新增的一个特性,实现的过程是在目标对象之前设置了一层"拦截",外界对该对象的访问,都必须先通过这层拦截,因此提供 ...

  2. Agilepoint中的JS Method 封装

    /**================================================================================================= ...

  3. VMware Workstation Ubuntu 20.04 LTS无法连接网络问题

    本文记录了自己使用的安装在VMware Workstation上的Ubuntu20.04无法连接到网络的解决过程--终于解决困扰我两个小时的问题 出现问题# 毫无征兆,平时使用正常的Ubuntu在今天 ...

  4. centos7下的防火墙部署

    iptables以及firewalld其实都是防火墙管理工具,说白一点,就是一个服务,用来保障公网与内网 iptables 由于centos7没有自带,需要自己安装 安装 yum install ip ...

  5. JBOSS环境与应用部署

  6. Asp.Net Core上传大文件请求体限制设置

    IIS进程内部署时 1. Web.Config的<system.webServer>节点下增加 <security> <requestFiltering> < ...

  7. Unity 读取Json文件、创建Json文件

    using System.IO; using UnityEngine; public class ReadJson:MonoBehaviour { public static TestSetting ...

  8. (转载)Overlay网络

    1. Overlay 网络1.1 Overlay 技术概述    Overlay 在网络技术领域,指的是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网 ...

  9. Oracle View的Force參數有什麼用途?

    1. 當建立View的SQL查詢語句因為各種問題還暫時無法執行時,可以使用Force參數先建立成功2. SQL的問題沒有修正之前,是無法正常使用View的 語法:  CREATE Force VIEW ...

  10. centos7普通用户拥有root权限并登录执行脚本

    1.useradd test 2.passwd test 3.usermod -s 脚本绝对路径 test 4.vi /etc/passwd修改test用户的uid和gid为0