我想通过switch语句来确定什么类型的东西包含泛型。声明一个存储在变量中的泛型列表
下面的代码愚蠢的,而是说明性位,显示什么,我试图做的:
Type tempType;
switch(number)
{
case 0:
tempType = typeof(int);
break;
case 1:
tempType = typeof(bool);
break;
case 2:
tempType = typeof(long);
break;
}
List<tempType> theList = new List<tempType>();
当我尝试这一点,给出了错误:
The type or namespace name 'tempType' could not be found (are you missing a using directive or an assembly reference?)
我的假设,为什么是因为它正在寻找那些全球可用的类型,并且没有查看此方法的本地成员变量。我该如何做这样的事情?
编辑: 为了给出更多的上下文,我尝试使用Quartz.NET,并且试图用它创建不同的作业,所以这个例子中的每个类型都是不同的作业类,每个作业类都有它们的具体的执行命令。不同的情况是当我想访问特定的工作类时。然后,我将通过创建工作:
tempJob = JobBuilder.Create<tempType>()
.WithIdentity("SomeJob " + i)
.UsingJobData()
.Build();
你能描述一下你为什么需要这样做;把这个要求放在上下文中,因为它可能不是解决这个问题的最好方法。 – Servy
我添加了你请求的上下文。 – Xantham
由于'Create'方法在那里显示,您应该只需在该方法的泛型参数中指定类。如果你不这样做,那么流式接口中的下一个方法将不知道(在编译时)该类型是什么,所以他们将无法对'List'做任何事情。 – Servy