在C#中,要在方法中实例化传递的泛型类型,可以使用反射和激活器。以下是一个示例:
using System;
public class MyClass<T>
{
public T MyProperty { get; set; }
}
public class Program
{
public static void Main()
{
Type genericType = typeof(MyClass<>);
Type specificType = genericType.MakeGenericType(typeof(int));
object instance = Activator.CreateInstance(specificType);
// 使用反射设置属性值
specificType.GetProperty("MyProperty").SetValue(instance, 42);
// 使用反射获取属性值
int value = (int)specificType.GetProperty("MyProperty").GetValue(instance);
Console.WriteLine($"Value: {value}");
}
}
在这个示例中,我们首先获取泛型类型 MyClass<>
的 Type
对象。然后,我们使用 MakeGenericType
方法创建一个具体类型 MyClass<int>
。接下来,我们使用 Activator.CreateInstance
方法创建一个 MyClass<int>
的实例。最后,我们使用反射设置和获取属性值。
需要注意的是,在使用反射时,性能可能会受到影响,因此在性能关键的场景中要谨慎使用。
领取专属 10元无门槛券
手把手带您无忧上云