您的位置:首页 > 编程语言 > Java开发

Spring.NET依赖注入框架学习-- 泛型对象的创建和使用

2017-05-19 11:48 771 查看

Spring.NET依赖注入框架学习-- 泛型对象的创建和使用

泛型对象的创建方法和普通对象是一样的。

通过构造器创建泛型对象

下面是一个泛型类的代码:

namespace GenericsPlay
{
public class FilterableList<T>
{
private List<T> list;

private String name;

public List<T> Contents
{
get { return list; }
set { list = value; }
}

public String Name
{
get { return name; }
set { name = value; }
}

public List<T> ApplyFilter(string filterExpression)
{
/// should really apply filter to list ;)
return new List<T>();
}

}
}

下面是该类的对象定义:

<object id="myFilteredIntList" type="GenericsPlay.FilterableList&lt;int>, GenericsPlay">
<property name="Name" value="My Integer List"/>
</object>

在为泛型类对象指定type属性的时候要注意:第一,左尖括号<要替换成字符串“&lt;”,因为在XML中左尖括号会被认为是小于号。从可读性来讲,我们都知道这并不是理想的方式。第二,type参数值中不能包含程序集的名称,因为程序集名称要求和类型全名用逗号隔开,而在这里逗号已经被用来分隔泛型类的类型参数了。将来可能会用其它字符代替这两个符号,但目前还没找到更具可读性的方案。若要提高可读性,建议使用类型别名,如下所示:

<typeAliases>
<alias name="GenericDictionary" type=" System.Collections.Generic.Dictionary&lt;,>" />
<alias name="myDictionary" type="System.Collections.Generic.Dictionary&lt;int,string>" />
</typeAliases>

然后,下面的对象定义:

<object id="myGenericObject"
type="GenericsPlay.ExampleGenericObject&lt;System.Collections.Generic.Dictionary&lt;int , string>>, GenericsPlay" />

就可以缩短为:

<object id="myOtherGenericObject"
type="GenericsPlay.ExampleGenericObject&lt;GenericDictionary&lt;int , string>>, GenericsPlay" />

或者更短:

<object id="myOtherOtherGenericObject"
type="GenericsPlay.ExampleGenericObject&lt;MyIntStringDictionary>, GenericsPlay" />

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: