c# 在用反射对类赋值时 整形数组如何给枚举数组赋值
时间: 2023-09-14 14:09:31 浏览: 53
如果需要将一个整型数组转换成枚举类型的数组并进行赋值,可以使用如下代码:
```csharp
// 假设有一个整型数组 intArray 和一个枚举类型 enumType
int[] intArray = { 1, 2, 3 };
var enumArray = new EnumType[intArray.Length];
// 使用反射将整型数组转换成枚举类型数组
for (int i = 0; i < intArray.Length; i++)
{
enumArray[i] = (EnumType)Enum.ToObject(typeof(EnumType), intArray[i]);
}
// 将枚举类型数组赋值给对应属性或字段
var obj = new SomeClass();
var fieldInfo = obj.GetType().GetField("SomeField");
fieldInfo.SetValue(obj, enumArray);
```
其中,`Enum.ToObject(typeof(EnumType), intArray[i])` 方法可以将整型值转换成对应的枚举类型。在赋值时,需要先获取到对应的属性或字段信息,然后使用 `SetValue` 方法进行赋值。
相关问题
c# 在用反射对类赋值时 不知道枚举的类型 整形数组如何给枚举数组赋值
在使用反射对类赋值时,可以使用 Enum.Parse 方法将整数转换为枚举值。具体来说,可以使用以下代码:
```
// 获取枚举类型
Type enumType = typeof(MyEnum);
// 获取整型数组
int[] intArray = new int[] { 1, 2, 3 };
// 创建枚举数组
Array enumArray = Array.CreateInstance(enumType, intArray.Length);
// 遍历整型数组,将每个整数转换为枚举值并赋值给枚举数组
for (int i = 0; i < intArray.Length; i++)
{
object enumValue = Enum.Parse(enumType, intArray[i].ToString());
enumArray.SetValue(enumValue, i);
}
// 将枚举数组赋值给对象的属性或字段
myObject.MyEnumArray = (MyEnum[])enumArray;
```
这里假设 MyEnum 是你的枚举类型,myObject 是你要赋值的对象,MyEnumArray 是对象的属性或字段。需要注意的是,如果整型数组中有值不能转换为枚举值,会抛出异常,需要进行异常处理。
C# 怎么样给枚举变量赋值
C是一种计算机编程语言,由Dennis Ritchie在1972年开发出来的。它是一种面向过程的语言,主要用于开发系统级软件和应用程序。C是一种较为底层的语言,提供了较强的控制能力和灵活性,但需要程序员自行管理内存和指针等资源。C语言成为了现代计算机编程的基石,许多著名的软件和操作系统都是用C语言编写的。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)