不要问我为什么,但我需要做以下事情:
string cName = "ClassA";
List<cName> l = new List<cName>();
我该怎么办?
我的代码:
public void MergeForm(List<object> lModel)
{
string className = lModel[0].GetType().Name;
的 List<className> list = new List<className>();
}
对象 - 它是一个类
答案 0 :(得分:3)
var l = Assembly.GetTypes().Where(t => t.Name == "ClassA").ToList();
如果您拥有完整的类型名称,则可以使用Assemmbly.GetType
。
如果您拥有完整的类型名称和程序集限定名称,并且您要搜索的类型位于另一个程序集中,请使用Type.GetType
。
答案 1 :(得分:3)
您不能将List<cName>
作为静态类型,但可以创建实例:
IList l = (IList)Activator
.CreateInstance(typeof(List<>)
.MakeGenericType(Type.GetType(cName)));
但是, cName
必须是完全限定的名称。
答案 2 :(得分:0)
答案 3 :(得分:0)
Type ac;
string cName = "ClassA";
switch (cName)
{
case "ClassA":
ac = typeof(ClassA);
break;
case "ClassB":
ac = typeof(ClassB);
break;
default:
ac = typeof(System.String);
break;
}
var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(ac);
var l= Activator.CreateInstance(specificListType);