Spring.NET教程(八)集合类型的注入(基础篇)

Spring.net还支持集合类型的注入。而且使用起来也比较方便。

一、ILIst类型

使用<list>元素作为ILIst的标签,value为集合中元素的值。也可以注入对象,甚至关联其它对象,使用 <ref/>元素表示关联的对象,object 属性为所关联对象的id或name。集合可以为空,用<null/>元素来标记。

在<list>元素中设置 element-type 属性表示泛型T的类型,例如 element-type="int"  ,代表int型。

二、IDictionary类型

使用<dictionary>元素来表示IDictionary接口的实现类型。<entry/>表示IDictionary集合的元素。key和value属性为元素的键值队,value-ref为关联的元素。

同理,<dictionary>元素的key-type和value-type属性来表示泛型IDictionary,例如 <dictionary key-type="string" value-type="object"> 。

完整代码如下:

Domain

public class Happy

{

public override string ToString()

{

return "每天都开心,每天都有好心情";

}

}

public class OneYear

{

public override string ToString()

{

return "快乐的一年";

}

}

public class Person

{

public IList<Person> BestFriends { get; set; }

public IList HappyYears { get; set; }

public IList<int> Years { get; set; }

public IDictionary HappyDic { get; set; }

public IDictionary<string,object> HappyTimes { get; set; }

}

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>

<spring>

<context>

<resource uri="config://spring/objects" />

</context>

<objects XMLns="http://www.springFramework.net">

<object id="person" type="SpringNetDi.Person, SpringNetDi">

<!--空集合属性-->

<property name="BestFriends">

<null/>

</property>

<!--System.Collections.IList注入 -->

<property name="HappyYears">

<list>

<value>1992</value>

<value>1998 年</value>

<ref object="oneYear"/>

</list>

</property>

<!--System.Collections.IList<int>注入 -->

<property name="Years">

<list element-type="int">

<value>1992</value>

<value>1998</value>

<value>2000</value>

</list>

</property>

<!--System.Collections.IDictionary注入-->

<property name="HappyDic">

<dictionary key-type="string" value-type="object">

<entry key="第一开心" value="每天都能睡一个好觉"/>

<entry key="第二开心" value-ref="happy"/>

</dictionary>

</property>

<!--System.Collections.IDictionary<object,object>注入-->

<property name="HappyTimes">

<dictionary key-type="string" value-type="object">

<entry key="第一开心" value="每天都能睡一个好觉"/>

<entry key="第二开心" value-ref="happy"/>

</dictionary>

</property>

</object>

<object id="oneYear" type="SpringNetDi.OneYear,SpringNetDi"/>

<object id="happy" type="SpringNetDi.Happy,SpringNetDi"/>

</objects>

</spring>

</configuration>

Program

class Program

{

static void Main(string[] args)

{

IApplicationContext ctx = ContextReGIStry.GetContext();

Person person = ctx.GetObject("person") as Person;

Console.WriteLine("空值");

string bestFriend = person.BestFriends == null ? "我的朋友太多了" : "我只有一个好朋友";

Console.WriteLine(bestFriend);

Console.WriteLine();

Console.WriteLine("IList");

foreach (var item in person.HappyYears)

{

Console.WriteLine(item);

}

Console.WriteLine();

Console.WriteLine("泛型Ilist<int>");

foreach (int item in person.Years)

{

Console.WriteLine(item);

}

Console.WriteLine();

Console.WriteLine("IDictionary");

foreach (DictionaryEntry item in person.HappyDic)

{

Console.WriteLine(item.Key + " 是 " + item.Value);

}

Console.WriteLine();

Console.WriteLine("泛型IDictionary<string,object>");

foreach (KeyValuePair<string,object> item in person.HappyTimes)

{

Console.WriteLine(item.Key + " 是 " + item.Value);

} 

Console.ReadLine();

}

}

输入结果如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzhdim

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值