作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我试图在一个通用列表中存储一个通用对象列表,但我在声明它时遇到了困难。我的对象看起来像:
public class Field<T>
{
public string Name { get; set; }
public string Description { get; set; }
public T Value { get; set; }
/*
...
*/
}
我想创建一个列表。我的问题是列表中的每个对象都可以有一个单独的类型,因此填充的列表可能包含如下内容:
{ Field<DateTime>, Field<int>, Field<double>, Field<DateTime> }
那么我该如何声明呢?
List<Field<?>>
(我希望尽可能保持类型安全,所以我不想使用 ArrayList)。
最佳答案
在这种情况下,拥有一个包含非泛型位的抽象基类(或接口(interface))可能会让您受益:
public abstract class Field
{
public string Name { get; set; }
public string Description { get; set; }
}
public class Field<T> : Field
{
public T Value { get; set; }
/*
...
*/
}
然后你可以有一个List<Field>
.这表达了您实际了解的有关列表的所有信息。您不知道字段值的类型,因为它们可能因一个字段而异。
关于c# - 泛型的泛型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2701830/
我是一名优秀的程序员,十分优秀!