中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

如何在C#中使用反射實現泛型的動態操作

c#
小樊
83
2024-08-13 07:22:39
欄目: 編程語言

在C#中使用反射實現泛型的動態操作可以通過以下步驟實現:

  1. 獲取泛型類型的Type對象: 可以使用Type.MakeGenericType方法根據泛型類型參數動態創建泛型類型的Type對象。

  2. 創建泛型類型的實例: 使用Activator.CreateInstance方法根據Type對象創建泛型類型的實例。

  3. 調用泛型類型的方法或屬性: 通過MethodInfo對象獲取泛型類型的方法或屬性,并使用MethodInfo.Invoke方法調用方法或獲取屬性的值。

下面是一個示例代碼,展示如何使用反射實現泛型的動態操作:

using System;
using System.Reflection;

public class Program
{
    public static void Main()
    {
        Type genericType = typeof(List<>);
        Type[] typeArgs = { typeof(int) };
        Type specificType = genericType.MakeGenericType(typeArgs);
        
        object instance = Activator.CreateInstance(specificType);
        
        MethodInfo addMethod = specificType.GetMethod("Add");
        addMethod.Invoke(instance, new object[] { 10 });
        
        MethodInfo getItemMethod = specificType.GetMethod("GetItem");
        int result = (int)getItemMethod.Invoke(instance, new object[] { 0 });
        
        Console.WriteLine("Item at index 0: " + result);
    }
}

public class List<T>
{
    private T[] items = new T[10];
    
    public void Add(T item)
    {
        items[0] = item;
    }
    
    public T GetItem(int index)
    {
        return items[index];
    }
}

在上面的示例中,我們首先獲取泛型類型List<>的Type對象,然后根據Type對象和泛型類型參數int創建特定類型List的Type對象。接著我們使用Activator.CreateInstance方法創建List的實例,并通過反射調用Add和GetItem方法進行動態操作。

0
措美县| 上蔡县| 营口市| 安康市| 根河市| 张家川| 和政县| 左贡县| 菏泽市| 久治县| 恩施市| 德惠市| 锦屏县| 龙泉市| 双柏县| 城市| 寿宁县| 筠连县| 叶城县| 嘉兴市| 西昌市| 红原县| 平武县| 屏山县| 博罗县| 南木林县| 孝感市| 泸定县| 高州市| 休宁县| 台前县| 农安县| 绥德县| 肇源县| 星座| 习水县| 方正县| 甘泉县| 沙河市| 长汀县| 麟游县|