文章目录
我们在编程程序时,经常会遇到功能非常相似的模块,只是它们处理的数据不一样。但我们没有办法,只能分别写多个方法来处理不同的数据类型。这个时候,那么问题来了,有没有一种办法,用同一个方法来处理传入不同种类型参数的办法呢?泛型的出现就是专门来解决这个问题的。
泛型允许我们声明类型参数化的代码。也就是说,我们可以用 “类型占位符” 来写代码,然后在创建类的实例时指明真实的类型。类型是实例的模板。对于泛型类型,它是类型的模板。
using System;
using System.Reflection;
public class GenericExample<T>
{
public T Data { get; set; }
}
public class Program
{
public static void Main()
{
var example = new GenericExample<int> { Data = 42 };
PropertyInfo propertyInfo = example.GetType().GetProperty("Data");
object propertyValue = propertyInfo.GetValue(example);
Console.WriteLine(propertyValue); // 输出: 42
}
}
在这个例子中,GenericExample 类是一个泛型类,其中定义了一个名为 Data 的属性。在 Main 方法中,我们创建了一个 GenericExample 实例,并通过反射获取了 Data 属性的 PropertyInfo。然后,我们使用 GetValue 方法从实例中获取了 Data 属性的值。
请注意,这种方法在性能和类型安全性上可能不是最优的,尤其是在需要频繁访问属性的情况下。如果可能,最好避免在性能敏感的代码中使用反射。