C#如何通过反射实列化,并获取其字段
时间: 2023-06-26 21:10:37 浏览: 64
在C#中,可以通过反射来实例化一个对象,并获取其字段。下面是一个示例代码:
```
using System;
using System.Reflection;
class MyClass
{
public int myField;
}
class Program
{
static void Main(string[] args)
{
// 实例化对象
Type type = typeof(MyClass);
object obj = Activator.CreateInstance(type);
// 获取字段
FieldInfo field = type.GetField("myField");
field.SetValue(obj, 123);
// 输出结果
Console.WriteLine((obj as MyClass).myField);
}
}
```
在这个示例中,我们首先使用 `typeof` 关键字获取 `MyClass` 类型对象,然后使用 `Activator.CreateInstance` 方法创建一个实例对象。接下来,我们使用 `GetField` 方法获取 `myField` 字段的 `FieldInfo` 对象,并使用 `SetValue` 方法设置其值。最后,我们将字段的值输出到控制台上。
需要注意的是,这种方式获取字段需要知道字段的名称,并且字段必须是公共的。如果字段是私有的或者受保护的,可以使用 `GetField` 方法的重载版本来获取非公共字段。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)