【发布时间】:2018-07-29 19:45:27
【问题描述】:
如果我创建一个具有字符串名称的类的实例,例如
public static object GetInstance(string strFullyQualifiedName) {
Type type = Type.GetType(strFullyQualifiedName);
if (type != null)
return Activator.CreateInstance(type);
}
返回一个对象:
object myClass = GetInstance("MyClassName");
然后我怎样才能将此对象“myClass”作为 T 传递给方法?
public static List<T> CreateListAndAddEmpty<T>() where T : new() {
List<T> list = new List<T>();
list.Add(new T());
return list;
}
var myList = CreateListAndAddEmpty<myClass>();
它不接受 myClass?
'myClass' 是一个变量,但用作类型
任何想法如何从字符串名称创建一个可以用作 T 的类?
谢谢,
【问题讨论】:
-
泛型在编译时需要有类型。
-
你必须使用反射来调用方法:stackoverflow.com/questions/232535/…
-
每次我看到一个涉及将
string转换为特定类型的问题时,它几乎总是一个 XY 问题,或者应该以不同的方式完成。也许如果你解释一下你为什么这样做,我们可以想出一个更好的主意?
标签: c#