ITKeyword,专注技术干货聚合推荐

注册 | 登录

Spring.NET学习笔记3——实现一个简易的IoC框架(练习篇)

hliq5399 分享于 2011-03-26

推荐:IOC框架Castle Windsor 微软企业库中的Unity Spring.NET StructureMap Ninject性能比较

IOC框架Castle Windsor 微软企业库中的Unity Spring.NET StructureMap Ninject性能比较 作者: 来源: 发布时间:2011年07月17日 点击数: 341 考虑到有那么多的

2020腾讯云7月秒杀活动,优惠非常大!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1040

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

讲了这么多理论,我们来手动实现一个简易的IoC框架的,这样可以加深IoC的理论知识。

一、思路 在我们使用Spring.NET框架的时候,首先需要实例化Spring.NET容器, 然后调用IoC容器IObjectFactory接口中GetObject方法获取容器中的对象。通过这一点就可以告诉我们制作IoC容器需要写一个获取 XML文件内容的方法和申明一个Dictionary<string, object>来存放IoC容器中的对象,还需要写一个能从Dictionary<string, object>中获取对象的方法。

二、分析 要获取XML文件的内容,在3.5的语法中,我自然而然想到了Linq To XML。需要实例XML中配置的对象,我们想到了使用反射技术来获取对象的实例。

三、代码实现 1.xml工厂 MyXmlFactory using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using System.Reflection; namespace MyselfIoC {

public class MyXmlFactory

{

private IDictionary<string, object> objectDefine = new Dictionary<string, object>();

public MyXmlFactory(string fileName)

{

InstanceObjects(fileName);

// 实例IoC容器

}

/// <summary>

/// 实例IoC容器

/// </summary>

/// <param name="fileName"></param>

private void InstanceObjects(string fileName)

{

XElement root = XElement.Load(fileName);

var objects = from obj in root.Elements("object") select obj;

objectDefine = objects.ToDictionary(

k => k.Attribute("id")

推荐:Spring框架学习【IoC容器依赖注入】

1.当Spring IoC容器完成了Bean定义资源的定位、载入和解析注册以后,IoC容器中已经管理类Bean定义的相关数据,但是此时IoC容器还没有对所管理的Bean进行依赖注入

.Value,

v =>

{

string typeName = v.Attribute("type").Value;

Type type = Type.GetType(typeName);

return Activator.CreateInstance(type);

}

);

}

/// <summary>

/// 获取对象

/// </summary>

/// <param name="id"></param>

/// <returns></returns>

public object GetObject(string id)

{

object result = null;

if (objectDefine.ContainsKey(id))

{

result = objectDefine[id];

}

return result;

}

} } 复制代码 2.调用 Program using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyselfIoC {

class Program

{

static void Main(string[] args)

{

AppRegistry();

Console.ReadLine();

}

static void AppRegistry()

{

MyXmlFactory ctx = new MyXmlFactory(@"D:/Objects.xml");

Console.WriteLine(ctx.GetObject("PersonDao").ToString());

}

} } 复制代码 好了,一个简易的IoC框架就基本实现了

推荐:VS2010 C++ MFC框架学习笔记1 - 创建一个简单的加法计算器(1)

======================================= MFC程序框架及运行流程介绍 利用C++ MFC (微软基础类库)创建windows应用程序可以比较方便,因为微软打包好了很多基

讲了这么多理论,我们来手动实现一个简易的IoC框架的,这样可以加深IoC的理论知识。   一、思路 在我们使用Spring.NET框架的时候,首先需要实例化Spring.NET容器, 然后调用IoC容器IObjectFact

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。