c# – 通用对象的通用列表

前端之家收集整理的这篇文章主要介绍了c# – 通用对象的通用列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_1@假设我有一个表示数据字段的对象,该对象需要以下属性名称,类型,值,长度.这是对象:
class Field<T>
{
    public string Name { get; set; }
    public Type Type
    {
        get
        {
            return typeof(T);
        }
    }
    public int Length { get; set; }
    public T Value { get; set; }
}

我使用泛型,因为我想强制代码用户只能分配某个类型的值.
现在的问题是当我想创建一个字段列表.
如果我创建列表,例如List< Field< object>>那么我们可以为列表中的给定字段分配任何值,当我们查询Type时,我们得到’object’.
事情是 – 在这个列表上,我可能希望几个字段持有字符串,很少拥有int,日期,甚至自定义对象,反过来将有一个列表的字段…
泛型是一种很好的解决方案吗?如果是,我该怎么办呢?如果没有,什么是更好的方法

– -编辑 – –
只是添加一些更多的背景:
我可能想要一个字段列表,每个字段将保存不同的数据类型,如下所示:

List<Field<object>> lst = new List<Field<object>>();
lst.Add(new Field<string>());
lst.Add(new Field<int>());
lst.Add(new Field<SomeObjectFromMyApp>());

后来我将不得不在一个循环中自动查询这些对象及其属性,就像这样:

foreach(Field<object> fld in lst)
{
    Type t = fld.Type;
    //do some other stuff
}

解决方法

是的,仿制药是一个不错的选择.实现类型安全性的关键(并且识别具有Type属性的类型)是在列表和Field< T>类之间添加抽象.

有场< T>实现接口IField.此界面不需要任何成员.

然后将您的列表声明为列表< IField>.

这样,您将列表限制为仅包含字段,但每个字段可以是不同的类型.

然后再读取这些值,就可以了

foreach(var field in list)
{
    var type = field.Type;
    ....
}

猜你在找的C#相关文章