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



我想要一个带有"通用的";键入其中一个属性。

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

";值";可以是int、double、string或bool。

我怎样才能制作一个";通用的";我的自定义Tag类的列表?

public list<Tag> t;

我已经看了";通用的";集合和类,但问题是,如果我制作

class Tag<T>{}

我不能做:

List<Tag<T>> list = new List<Tag<T>>();
list.add(new Tag<int>());
list.add(new Tag<double>());

我尝试过使用接口、基类。。。我不知道在哪里找

一些想法?帮助

非常感谢。

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

public interface ITag
{
string Name { get; set; }
int Id { get; set; }
object Value { get; }
Type ValueType { get; }
}

那么Tag可以是通用的:

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);
}

现在你可以这样做了:

List<ITag> list = new List<ITag>();
list.Add(new Tag<int>());
list.Add(new Tag<double>());

问题仍然是为什么?

相关内容

  • 没有找到相关文章

最新更新