C# IOC 个人理解
学习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 个人理解的更多相关文章
- IOC的理解
转载http://www.cnblogs.com/xdp-gacl/p/4249939.html 很不错的文章,虽说是java的,但是.net也通用,所以复制一分,拿来看看挺不错的. 1.1.IoC是 ...
- 谈谈对Spring IOC的理解(转)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- 谈谈对Spring IOC的理解
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- Spring系列之谈谈对Spring IOC的理解
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IOC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- 谈谈对Spring IOC的理解【转】
学习过Spring框架的人 一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大 ...
- Spring IOC的理解
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理 ...
- 谈谈对Spring IOC的理解(转载)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- C# 一个初学者对 依赖注入 IOC 的理解( 含 Unity 的使用)
通过 人打电话 来谈谈自己对IOC的理解 版本1.0 public class Person { public AndroidPhone Phone { get; set; } public void ...
- 浅析对spring中IOC的理解
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- 依赖注入(DI)和控制反转(IOC)的理解,写的太好了。
学习过spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
随机推荐
- Vue3.0 实现数据双向绑定的方法
ue3.0 是通过Proxy实现的数据双向绑定,Proxy是ES6中新增的一个特性,实现的过程是在目标对象之前设置了一层"拦截",外界对该对象的访问,都必须先通过这层拦截,因此提供 ...
- Agilepoint中的JS Method 封装
/**================================================================================================= ...
- VMware Workstation Ubuntu 20.04 LTS无法连接网络问题
本文记录了自己使用的安装在VMware Workstation上的Ubuntu20.04无法连接到网络的解决过程--终于解决困扰我两个小时的问题 出现问题# 毫无征兆,平时使用正常的Ubuntu在今天 ...
- centos7下的防火墙部署
iptables以及firewalld其实都是防火墙管理工具,说白一点,就是一个服务,用来保障公网与内网 iptables 由于centos7没有自带,需要自己安装 安装 yum install ip ...
- JBOSS环境与应用部署
- Asp.Net Core上传大文件请求体限制设置
IIS进程内部署时 1. Web.Config的<system.webServer>节点下增加 <security> <requestFiltering> < ...
- Unity 读取Json文件、创建Json文件
using System.IO; using UnityEngine; public class ReadJson:MonoBehaviour { public static TestSetting ...
- (转载)Overlay网络
1. Overlay 网络1.1 Overlay 技术概述 Overlay 在网络技术领域,指的是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网 ...
- Oracle View的Force參數有什麼用途?
1. 當建立View的SQL查詢語句因為各種問題還暫時無法執行時,可以使用Force參數先建立成功2. SQL的問題沒有修正之前,是無法正常使用View的 語法: CREATE Force VIEW ...
- centos7普通用户拥有root权限并登录执行脚本
1.useradd test 2.passwd test 3.usermod -s 脚本绝对路径 test 4.vi /etc/passwd修改test用户的uid和gid为0