通用对象的通用列表 [英] Generic list of generic objects

查看:126
本文介绍了通用对象的通用列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个表示数据字段的对象,该对象需要以下属性:名称,类型,值,长度。以下是对象:

  class Field< T> 
{
public string Name {get;组; }
public Type Type
{
get
{
return typeof(T);
}
}
public int Length {get;组; }
public T Value {get;组; }
}

我使用泛型,因为我想强制代码的用户只能分配某个类型的值。

现在问题是当我想创建一个字段列表。

如果我创建列表像 List< Field< object>> 然后我们可以将任何值赋给列表上的给定字段,当我们查询Type时,我们得到'object'。
事情是 - 在该列表中,我可能需要几个字段持有字符串,很少持有整数,日期,甚至自定义对象,反过来将有一个字段列表...

泛型是一个很好的这样的解决方案?如果是的话,我将如何去实施它?如果不是,什么是更好的方法?


---编辑---

只需添加一些背景:

1.我可能需要一个列表

  List< Field< object>>字段,并且每个字段将保存不同的数据类型,如下所示: lst = new List< Field< object>>(); 
lst.Add(新字段< string>());
lst.Add(new Field< int>());
lst.Add(新字段< SomeObjectFromMyApp>());

2。稍后,我将不得不查询这些对象,并在一个循环中自动查询它们的属性,如下所示:

  foreach(Field<对象> fld in lst)
{
类型t = fld.Type;
//做一些其他的东西
}


解决方案 Type 属性的类型)的关键是在列表和 Field< T>之间添加一个抽象。 / code> class。



使字段< T> 实现接口



然后声明你的列表为 List< IField>