所以,
为了清楚起见,我已经查看了this Q& A,这不是我的问题。
现在,我的问题是,我有一个字符串,我可以从Excel中提取并通过拆分和其他方法将其分解,并查找它是否为枚举。
例如:
string enumStr = "eSomeEnumObject RANDOMENUMVAL"
是字符串,我能够拆分并检查它是否是枚举并获得字符串数组:
string[] enumArr = { "SomeEnumObject", "RANDOMENUMVAL" };
现在,我需要在class TestClass
中使用它,它引用了一个包含各种方法定义和枚举的库。
我刚刚提取的枚举对象名称和值基本上已经存在。现在,我知道要将字符串转换为枚举值,我们使用以下内容:
SomeEnumObject enumobj = (SomeEnumObject)Enum.Parse(typeof(SomeEnumObject, "RANDOMENUMVAL");
现在我的问题是:
我如何获得这个enum对象名称作为字符串,被动态写为enum对象类型,因为我试图自动化该过程,显然,当我尝试写:
enumArr[0] enumobj = (enumArr[0])Enum.Parse(typeof(enumArr[0], enumArr[1]);
它会抛出错误,因为它无法将字符串解析为枚举。
现在,有没有办法在不重新定义枚举的情况下执行此操作?
谢谢!
答案 0 :(得分:3)
您需要使用http://localhost:16010/master-status
或Type.GetType()
来获取类型。
你需要知道:
如果枚举与调用代码位于同一个程序集中,则可以使用Assembly.GetType()
。如果它位于不同的程序集中,则需要创建程序集限定名称,或者查找程序集(例如,使用编译时知道的其他类型)并在程序集上调用Type.GetType(fullyQualifiedName)
。
当您解析枚举值时,编译时类型将为GetType
,但它实际上将是枚举中的(盒装)值。那时你可以:
object
object
关键字dynamic
将其转换回字符串(这可能不会为您提供相同的字符串,例如,如果同一个值有多个名称)你不能使用变量的运行时值作为类型来声明变量,因为编译器需要知道编译时的类型。但上面的选项之一可以帮助你。
这是一个完整的例子:
ToString()