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

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

  一、ILIst

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

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

  二、IDictionary

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

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

  完整代如下:

Domain

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SpringNetCollectionDI
{
    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"/>
      <!--
      <resource uri="~/../../config.xml"/>
       <resource uri="file:///config.xml"/>
      -->
       <resource uri="file://config.xml"/>
    </context>

    <objects xmlns="http://www.springframework.net" />

  </spring>

    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
</configuration>

config.xml

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
  <object id="person" type="SpringNetCollectionDI.Person, SpringNetCollectionDI">

    <!--空集合属性-->
    <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="SpringNetCollectionDI.OneYear,SpringNetCollectionDI"/>
  <object id="happy" type="SpringNetCollectionDI.Happy,SpringNetCollectionDI"/>

</objects>

Program

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Spring.Context;
using Spring.Context.Support;


namespace SpringNetCollectionDI
{
    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();

        }
    }
}


猜你喜欢

转载自blog.csdn.net/wjgwrr/article/details/80650873
今日推荐