1.新建一个控制台应用程序 TestIOC
2.新增一个 IocFactory类
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml;using System.Xml.Linq;using System.Reflection;namespace TestIOC{ public class IocFactory { private string _path; private Dictionarydict = new Dictionary (); public IocFactory(string path) { this._path=path; } public object GetObject(string id) { XElement xe = XElement.Load(_path); var v = from c in xe.Elements("object") select c; dict = v.ToDictionary(k => k.Attribute("id").Value, s => { string type = s.Attribute("type").Value; Type ty = Type.GetType(type); return Activator.CreateInstance(ty); } ); return null; } }}
3.新增一个 PersonDao类
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace TestIOC{ public class PersonDao { public PersonDao() { Console.WriteLine(" this is PersonDao"); } public PersonDao(string name) { Console.WriteLine(" this is PersonDao:"+name); } }}
4.首先 新建一个object.xml
5.新控制台进行依赖注入
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;namespace TestIOC{ class Program { static void Main(string[] args) { string path = @"F:\Q\mytest\spring\TestIOC\TestIOC\object.xml"; IocFactory ioc = new IocFactory(path); PersonDao pd = ioc.GetObject("PersonDao") as PersonDao; Console.WriteLine("直接映射"); Activator.CreateInstance(Type.GetType("TestIOC.PersonDao")); Console.ReadLine(); } }}
6.显示效果
this is PersonDao
直接映射
this is PersonDao