【发布时间】:2020-04-01 21:13:04
【问题描述】:
我是 C# 初学者。我希望你对我有耐心。假设我有一个枚举
public enum Dogs
{
Terrier,
Poodle,
Pitbull,
}
还有一些狗类
public class Terrier {
}
public class Poodle {
}
public class Pitbull {
}
出于某种原因,我想从它们的类型(枚举值)动态实例化每个类,
foreach(Dogs d in Enum.GetValues(typeof(Dogs)))
{
// d myDog = new d();
// "...is a variable but is used like a type"
}
我也试过
var myDog = Activator.CreateInstance(d);
// "...cannot convert from namespace.Dogs to System.Type"
【问题讨论】:
-
虽然您的 Enum 和您的类中的值具有相同的名称,但它们不是相同的对象或类型,这就是您的两次尝试失败的原因。由于您是 C# 新手,我建议您从
switch语句开始,使用 Enum 值作为案例,并在每个案例中手动编写返回正确类型 Dog 的代码。Activator.Instance通常在您没有直接引用要构造的类型时使用,所以我会在这里避免使用它。
标签: c# types enums instantiation