c# - 如何根据枚举的名称动态创建对象?无开关

标签 c# enums

我有这样的东西

enum Animal
{
    Cat,
    Dog,
    Cow,
    Pigeon
}

和类

public class Cow
{ }

public class Dog
{ }

public class Cow
{ }

public class Pigeon
{ }

这就是我想要实现的是根据选定的枚举动态创建一个类对象。枚举和类名总是相同的。枚举和类有几十个,所以我不想为每一对添加另一个案例。

均衡

公共(public)对象 GetAnimal(Animal 动物)

GetAnimal(Animal.Cow); 一样使用应该返回新的 Cow 类对象。

最佳答案

    public object GetAnimal(Animal animal)
    {
        var ns = typeof(Animal).Namespace; //or your classes namespace if different
        var typeName = ns + "." + animal.ToString();

        return Activator.CreateInstance(Type.GetType(typeName));
    }

关于c# - 如何根据枚举的名称动态创建对象?无开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25640344/

相关文章:

没有枚举的 Pythonic 设计

c# - Xbox360 上的 XNA 和 Linq

c# - 将 Clarion 过程声明转换为 C# DLLImport

c# - 在 Sitecore8 内部链接字段中限制要按扩展名选择的项目

enums - 将字符串转换为枚举

c++ - C++ 中是否有一种方法可以定义一个枚举,使其值在访问时必须完全限定?

c# - 在 ASP.Net 中处理尖括号

c# - 将一定数量的行从 DataReader 加载到数据表中

c - 为什么在#define 一样高效时使用枚举?

c++ - 在 g++ 4.8.1 中使用枚举启用_if