C#的反射怎么調(diào)用

c#
小億
150
2023-07-05 23:45:28

在C#中,可以使用反射來(lái)調(diào)用方法、屬性和字段。下面是一些示例代碼,演示了如何使用反射來(lái)調(diào)用方法:

  1. 調(diào)用公共靜態(tài)方法:
// 獲取類(lèi)型
Type type = typeof(MyClass);
// 獲取方法
MethodInfo method = type.GetMethod("MyMethod");
// 調(diào)用方法
method.Invoke(null, null);
  1. 調(diào)用公共實(shí)例方法:
// 創(chuàng)建對(duì)象
object obj = Activator.CreateInstance(typeof(MyClass));
// 獲取方法
MethodInfo method = typeof(MyClass).GetMethod("MyMethod");
// 調(diào)用方法
method.Invoke(obj, null);
  1. 調(diào)用帶參數(shù)的方法:
// 創(chuàng)建對(duì)象
object obj = Activator.CreateInstance(typeof(MyClass));
// 獲取方法
MethodInfo method = typeof(MyClass).GetMethod("MyMethod");
// 設(shè)置參數(shù)
object[] parameters = new object[] { "parameter1", 2 };
// 調(diào)用方法
method.Invoke(obj, parameters);

除了調(diào)用方法,還可以使用反射來(lái)獲取和設(shè)置屬性和字段的值。下面是一些示例代碼:

  1. 獲取和設(shè)置公共屬性的值:
// 創(chuàng)建對(duì)象
object obj = Activator.CreateInstance(typeof(MyClass));
// 獲取屬性
PropertyInfo property = typeof(MyClass).GetProperty("MyProperty");
// 獲取屬性值
object value = property.GetValue(obj);
// 設(shè)置屬性值
property.SetValue(obj, newValue);
  1. 獲取和設(shè)置公共字段的值:
// 創(chuàng)建對(duì)象
object obj = Activator.CreateInstance(typeof(MyClass));
// 獲取字段
FieldInfo field = typeof(MyClass).GetField("MyField");
// 獲取字段值
object value = field.GetValue(obj);
// 設(shè)置字段值
field.SetValue(obj, newValue);

以上示例代碼僅僅是演示了如何使用反射來(lái)調(diào)用方法、獲取和設(shè)置屬性和字段的值。在實(shí)際應(yīng)用中,可能需要更復(fù)雜的操作,比如處理異常、處理泛型方法等。

0