我如何可以定义一个类型列表,这样我可以用它作为:与类型的动态计数泛型类型参数
var l1 = new List<int>();
var l2 = new List<int, long>();
var l3 = new List<int, long, byte>();
?
我如何可以定义一个类型列表,这样我可以用它作为:与类型的动态计数泛型类型参数
var l1 = new List<int>();
var l2 = new List<int, long>();
var l3 = new List<int, long, byte>();
?
您可以使用元组的列表:
var l1 = new List<int>();
var l2 = new List<Tuple<int, long>>();
var l3 = new List<Tuple<int, long, byte>>();
所以,我找到了解决办法。它需要定义基本类型名单:它
class List { }
,并继承了一些孩子的的:
class List<T> { }
class List<T, T1> : List<T> { }
class List<T, T1, T2> : List<T> { }
(继承不一定,但它需要如果清单中已浇注到列表)
基本列表构造可以得到所有应用的通用参数:
class List
{
Type[] _types;
public List()
{
_types = GetType().GetGenericArguments();
}
}
“继承”继承列表
但是,这仍然只是一个'List
我尝试归档的一件事是列表类型,可以用不同类型的参数计数创建。在我的认识中,它需要将一些类型映射到List(而不是将它们传递给任何方法)。基础构造函数获取泛型参数并将它们保存到Type []数组中 – devi 2012-02-23 10:19:04
说你想GE t从您的l3
列表中选择第3个项目 - 您会做什么?
如果你的回答是“我想将它转换为long
,因为int
和byte
都浇注到long
反正”,你应该首先使用List<long>
。
如果你要使用的检索类型l3[3].GetType()
和if else
,你应该考虑使用List<object>
,为你治疗项目为“未知类型”。
你正在尝试实现目前还不清楚。在.NET中没有List的原因是它没用。你可以创建一个包装int long和byte的类型,并且创建一个这种类型的列表。 –
2012-02-23 09:58:39
你的用例是什么?你应该向我们解释你想做什么。 – ken2k 2012-02-23 10:22:38
我尝试归档的一件事是列表类型,可以使用不同的类型参数计数创建。在我的认识中,它需要将一些类型映射到List(而不是将它们传递给任何方法)。 – devi 2012-02-23 10:23:33