我有一个读取一些 XML 并填充对象的方法。这是通过基于 XML 中的元素名称计算对象上的属性名称的反射来完成的。这适用于基本对象类型,但我正在努力处理枚举数组。
因此,我的枚举数组属性有一个 PropertyInfo 对象(我们称之为属性),并且我有一个字符串值(我们称之为值),其中包含表示枚举值的逗号分隔数字(例如“1,3,5”)。
我努力了:
property.SetValue(this, value.Split(',').Select(i => int.Parse(i)).ToArray(), null);
和
property.SetValue(this, value.Split(',').Select(i => Enum.ToObject(property.PropertyType.GetElementType(), int.Parse(i))).ToArray(), null);
但没有喜悦。在第一个代码示例中,Select.ToArray 的结果是一个 int[],然后引发解析错误。与第二种情况类似,但 Select.ToArray 返回一个 object[] 并再次引发解析错误。
我想写这个好像枚举类型是未知的。
有任何想法吗?