学习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. matlab如何关闭figure

    如果想要关闭之前打开的figure,用**close()**函数就可以了. close(H):关闭句柄为H的figure: close('name'):关闭指定name的figure: close a ...

  2. cross-env 运行跨平台设置和使用环境变量的脚本

    1.1 cross-env是什么 运行跨平台设置和使用环境变量的脚本 1.2 出现原因 当您使用 NODE_ENV=production, 来设置环境变量时,大多数 Windows 命令提示将会阻塞( ...

  3. hive知识点总结

    hive知识点总结 1.什么是HIVE? 1.hive是hadoop生态圈的一个工具,提供一种结构化查询语言,可以查询HDFS或者其他文件系统上的文件. 2.hive操作: 1.hive一次使用命令: ...

  4. 使用.Net工具安装某种程序

    使用.Net开发的一个程序,安装时需要使用.net的工具. Emmm... 好长时间不用,有点忘了,偶尔翻到,记录一下 @echo off setlocal chcp 65001 set U_PATH ...

  5. CI2454国产8位RISC核SoC芯片

    Ci2454是一款集成无线收发器和8位RISC(精简指令集)MCU的SOC芯片.主要应用在遥控玩具.智能灯控.数据透传.工业控制等领域.无线收发器主要特性 工作在 2.4GHz ISM 频段. 调制方 ...

  6. Java语言中的复合运算符会自动进行类型转换

    计算1/1-1/2+1/3+--+1/99-1/100 public class LoopControlExercise08{ public static void main(String[] arg ...

  7. defineProperty和Proxy

    Proxy  JS标准内置对象 const p = new Proxy(target, handler) 创建一个对象的代理: let obj = { a: { b: { c: 1 } } } let ...

  8. oracle job的使用

    select job, next_date, next_sec, failures, broken from user_jobs; create or replace sequence END_RES ...

  9. 关于protobuf报错'tr1/unordered_map' file not found

    这个问题的话,查了很多资料,总的来说就是C++版本的问题,新版本的namespace结构变化了,C++库的层级结构变化了 1.config.h HASH_MAP_H    HASH_SET_H 新版本 ...

  10. 5_Java对象

    面向对象编程 对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统.但是,具体到微观操作,仍然需要面向过程的思路去处理. 面向对象编程(Object-Ori ...