首先
新建控制台应用,然后添加一系列的类
步骤
UserInfo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Spring.net
{
public class UserInfo
{
public string Name { get; set; }
public string Age { get; set; }
}
}
IUserInfoDal
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Spring.net
{
public interface IUserInfoDal
{
UserInfo UserInfo { get; set; }
string Name { get; set; }
void Show();
}
}
AdoNetUserInfoDal
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Spring.net
{
class AdoNetUserInfoDal : IUserInfoDal
{
public AdoNetUserInfoDal(string name, UserInfo userInfo)
{
Name = name;
UserInfo = userInfo;
}
public string Name { get; set; }
public UserInfo UserInfo { get; set; }
public void Show()
{
Console.WriteLine("我是AdoNetDal,属性注入:Name" + Name);
Console.WriteLine("UserInfo,Name" + UserInfo.Name + "Age=" + UserInfo.Age);
}
}
}
EFUserInfoDal
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Spring.net
{
class EFUserInfoDal:IUserInfoDal
{
public EFUserInfoDal()
{
}
public UserInfo UserInfo { get; set; }
public string Name { get; set; }
public void Show()
{
Console.WriteLine("我是EFDal,属性注入:Name" + Name);
Console.WriteLine("UserInfo,Name" + UserInfo.Name + "Age=" + UserInfo.Age);
}
}
}
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<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>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<!--Spring.Net节点配置-->
<spring>
<context>
<!--容器配置-->
<resource uri="config://spring/objects"/>
<!--xml文件方式,更改属性,复制到输出目录:始终复制-->
<!--
<resource uri="file://objects.xml"/>
-->
<!--嵌入程序集方式,assembly://程序集名/项目名/objects.xml,更改属性,始终复制,生成操作,嵌入的资源-->
<!--
<resource uri="assembly://Spring.Net/Spring.Net/objects.xml"/>-->
</context>
<objects xmlns="http://www.springframework.net">
<!--这里放容器里面所有节点-->
<description>An example that demostrates simple IoC features.</description>
<!--name 必须要唯一, type=类的全名称所在的程序集-->
<object name="UserInfoDal" type="Spring.Net.EFUserInfoDal,Spring.Net">
<property name="Name" value="张三"/>
<!--ref指向下面的属性注入-->
<property name="UserInfo" ref="UserInfo"/>
</object>
<!--构造函数注入-->
<object name="UserInfoDal2" type="Spring.Net.AdoNetUserInfoDal,Spring.Net">
<constructor-arg index="0" value="张三"/>
<constructor-arg index="1" ref="UserInfo"/>
</object>
<!--属性注入-->
<object name="UserInfo" type="Spring.Net.UserInfo, Spring.Net">
<property name="Name" value="李四"/>
<property name="Age" value="15"/>
</object>
</objects>
</spring>
</configuration>
Program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Spring.Core;
using Spring.Context.Support;
using Spring.Context;
using Common.Logging;
//Spring.Aop.dll 面向切面编程
//Spring.Core.dll spring框架基础
//Common.Logging.dll 这个必须也要引用
namespace Spring.net
{
class Program
{
static void Main(string[] args)
{
IApplicationContext ctx = ContextRegistry.GetContext();
IUserInfoDal efDal = ctx.GetObject("UserInfoDal") as IUserInfoDal;
efDal.Show();
IUserInfoDal adoDal = ctx.GetObject("UserInfoDal2") as IUserInfoDal;
adoDal.Show();
Console.ReadKey();
}
}
}
实现
Tips
1.注意引用
using Spring.Context.Support;
using Spring.Context;
using Common.Logining;
2.在NuGet包管理器中添加Spring.core
最后
学习尚未深入,只能单纯实现,原理还在慢慢研究中......
文章参考此处