C# 使用泛型类型和泛型列表初始化

C# 使用泛型类型和泛型列表初始化,c#,class,generics,base,derived,C#,Class,Generics,Base,Derived,我希望在其中一个属性中有一个“泛型”类型的自定义对象列表 public class Tag { public string Name { get; set; } public int id { get; set; } public ??? value {get;set;} } “值”可以是int、double、string或bool 如何创建自定义标记类的“通用”列表 public list<Tag> t; 公共列表t; 我看过“泛型”集合和类,但问

我希望在其中一个属性中有一个“泛型”类型的自定义对象列表

public class Tag
{
    public string Name { get; set; }
    public int id { get; set; }

    public ??? value {get;set;}

}
“值”可以是int、double、string或bool

如何创建自定义标记类的“通用”列表

public list<Tag> t;
公共列表t;
我看过“泛型”集合和类,但问题是,如果我

class Tag<T>{}
class标记{}
我不能:

List<Tag<T>> list = new List<Tag<T>>();
list.add(new Tag<int>());
list.add(new Tag<double>());
List List=新列表();
添加(新标记());
添加(新标记());
我尝试过使用接口、基类。。。我不知道去哪里找

一些想法?帮忙


非常感谢。

一种常见的方法是创建接口或基类

public interface ITag
{
    string Name { get; set; }
    int Id { get; set; }

    object Value { get; }
    Type ValueType { get; }
}
然后,
标记
可以是通用的:

public class Tag<T> : ITag
{
    public string Name { get; set; }
    public int Id { get; set; }

    public T Value { get; set; }

    object ITag.Value => this.Value;
    Type ITag.ValueType => typeof(T);
}
公共类标记:ITag
{
公共字符串名称{get;set;}
公共int Id{get;set;}
公共T值{get;set;}
object ITag.Value=>this.Value;
类型ITag.ValueType=>typeof(T);
}
现在您可以执行以下操作:

List<ITag> list = new List<ITag>();
list.Add(new Tag<int>());
list.Add(new Tag<double>());
List List=新列表();
添加(新标记());
添加(新标记());

问题仍然是为什么?

问题是关于什么语言的?TIA.oh抱歉,这是C##oh抱歉,这是C#“-:)为什么要将不同类型的对象放在同一个列表中?您希望如何准确地使用这些对象?嗨,谢谢所有的答案。我需要这个,因为我的应用程序连接到PLC(外部设备),这个PLC有不同的数据类型,ushort,int,bool,double…我只想要这个元素的一个列表。我尝试过你提出的解决方案,问题是当我得到一个元素时,我需要做一些转换,我不想要这个。我想也许我需要找到另一种设计来解决这个问题。@Sined-如果没有铸造。也许你可以解释你需要做什么,我们可以帮你吗?嗨,我想要的是不要声明500个对象(TagInt tag1=new…,TagDouble tag2=new…)我想创建一个标记对象列表,并创建一些方法来获取特定的标记。@Sined-这很好。LINQ可以很容易地做到这一点。问题是什么?我想有一个泛型类“Tag”,其中我想有一个属性,该属性具有我从PLC读取的数据类型(bool、int、double…)这部分很简单,我有它,然后我想有一个标签列表。我想让它访问列表,获取并设置这个列表的值。问题是?我可以创建一个泛型类,但我不能创建“列表mylist…”如果我把类型T,例如:int,所有的对象都应该是int,这样我可以添加到列表中,这不是我想要的,我只想要一个列表。