用的是VS2015
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SpringDemo
{
interface ITextSpring
{
void Show();
}
}
新建三個類 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SpringDemo
{
class baseTextSpring
{
public string PropStr { get; set; }
}
class XMLTextSpring : baseTextSpring, ITextSpring
{
public void Show()
{
Console.WriteLine("通過自身config文件配置調用");
Console.WriteLine("XMLTextSpring的Prop屬性是:" + PropStr);
}
}
class AssemblyTextSpring : baseTextSpring, ITextSpring
{
public void Show()
{
Console.WriteLine("通過XML嵌入文件配置調用");
Console.WriteLine("AssemblyTextSpring的Prop屬性是:" + PropStr);
}
}
class FileTextSpring : baseTextSpring, ITextSpring
{
public void Show()
{
Console.WriteLine("通過XML外部文件配置調用");
Console.WriteLine("FileTextSpring的Prop屬性是:" + PropStr);
}
}
}
以上 準備工作完成,下面開始進入正題using Spring.Context;
using Spring.Context.Support;
然後獲取容器IApplicationContext context = ContextRegistry.GetContext();
使用容器獲取類 ITextSpring XML = context.GetObject("XMLTextSpring") as ITextSpring;
ITextSpring assembly = context.GetObject("AssemblyTextSpring") as ITextSpring;
ITextSpring file = context.GetObject("FileTextSpring") as ITextSpring;
測試 XML.Show();
assembly.Show();
file.Show();
好處就在於不需要new一個類,不管你那三個類怎麼變,主程序裏都不需要修改,代碼如下using Spring.Context;
using Spring.Context.Support;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SpringDemo
{
class Program
{
static void Main(string[] args)
{
///獲取容器
IApplicationContext context = ContextRegistry.GetContext();
///創建類
ITextSpring XML = context.GetObject("XMLTextSpring") as ITextSpring;
ITextSpring assembly = context.GetObject("AssemblyTextSpring") as ITextSpring;
ITextSpring file = context.GetObject("FileTextSpring") as ITextSpring;
///使用方法
XML.Show();
assembly.Show();
file.Show();
Console.ReadLine();
}
}
}
此時如果運行是會報錯的 <configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
</sectionGroup>
</configSections>
然後在下面添加srping節點 <spring>
<!--Spring.Net對象容器的配置-->
<context>
<!--容器裏面的所有的對象在哪裏配置的?-->
<!--在項目下面的xml.xml文件裏配置-->
<resource uri="file://TextFile.xml"/>
<!--在項目下面的 assembly.xml文件裏配置-->
<resource uri="assembly://SpringDemo/SpringDemo/assembly.xml"/>
<!--在本配置文件後面配置-->
<resource uri="config://spring/objects"/>
</context>
<!--objects:配置的容器的裏面的對象的-->
<objects xmlns="http://www.springframework.net">
<description>這是描述</description>
<!--前面是命名空間 後面是程序集-->
<object name="XMLTextSpring" type="SpringDemo.XMLTextSpring, SpringDemo">
<property name="PropStr" value="App.config文件"/>
</object>
</objects>
</spring>
xml.xml表示在項目下有個xml.xml文件,裏面配置相關參數, file://表示運行時exe程序所在目錄<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.net
http://www.springframework.net/xsd/spring-objects.xsd">
<object name="FileTextSpring" type="SpringDemo.FileTextSpring, SpringDemo">
<property name="PropStr" value="TextSpring.xml文件"/>
</object>
</objects>
assembly.xml如下<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.net
http://www.springframework.net/xsd/spring-objects.xsd">
<object name="AssemblyTextSpring" type="SpringDemo.AssemblyTextSpring, SpringDemo">
<property name="PropStr" value="assembly.xml文件"/>
</object>
</objects>
此時運行還是會出錯,那是因爲xml.xml沒有生成到程序目錄文件下好了, 運行效果如下