我想要一个带有"通用的";键入其中一个属性。
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>());
问题仍然是为什么?