SPRING.NET 配置对象属性注入的例子

来源:互联网 发布:华大基因ipo数据撒谎 编辑:程序博客网 时间:2024/05/30 13:42

有几年没用spring.net了,下星期打算在项目里面用一下,毕竟注入能力太强大了。
首先还是用NuGet引用一下 Install-Package Spring.Core
下面创建三个类,其中一个类包含另外两个类作为属性

namespace SpringNetPropertyInject{    public class GameChannel    {        public string ChannelName { set; get; }        public string ChannelId { set; get; }    }}namespace SpringNetPropertyInject{    public class ChannelAccount    {        public string AccountName { set; get; }        public string AccountId { set; get; }    }}namespace SpringNetPropertyInject{    public class Test    {        public GameChannel Channel { set; get; }        public ChannelAccount Account { set; get; }        public void ShowName()        {            MessageBox.Show(Channel.ChannelName + Account.AccountName);        }    }}

我不太喜欢在app.config文件里面配置东西,因为会把那个文件搞得很臃肿,下面用object.xml文件进行配置

<?xml version="1.0" encoding="utf-8" ?><objects xmlns="http://www.springframework.net">  <object id="GameChannel" type="SpringNetPropertyInject.GameChannel">    <property name="ChannelName" value="某某渠道"/>  </object>  <object id="ChannelAccount" type="SpringNetPropertyInject.ChannelAccount">    <property name="AccountName" value="某某账户"/>  </object>  <object id="Test" type="SpringNetPropertyInject.Test">    <property name="Channel" ref="GameChannel"/>    <property name="Account" ref="ChannelAccount"/>  </object></objects>

值得注意的是这两句

    <property name="Channel" ref="GameChannel"/>    <property name="Account" ref="ChannelAccount"/>

Channel 为Test类里面的属性名称,它的注入配置节叫GameChannel,也就是下面这个

  <object id="GameChannel" type="SpringNetPropertyInject.GameChannel">    <property name="ChannelName" value="某某渠道"/>  </object>

这样把对象属性的属性也注入了,接着在程序中调用

using System;using System.Windows.Forms;using Spring.Context.Support;namespace SpringNetPropertyInject{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void Form1_Load(object sender, EventArgs e)        {            var context                = new XmlApplicationContext(Application.StartupPath + @"\object.xml");            var test = context.GetObject("Test") as Test;            if (test != null)                 test.ShowName();        }    }}

运行效果
可以看到,对象已被成功注入了

0 0
原创粉丝点击