亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

PropertyInfo如何實現深層屬性訪問

小樊
82
2024-07-08 17:02:20
欄目: 深度學習

在C#中,可以使用PropertyInfo類實現深層屬性訪問。首先,獲取對象的類型信息,然后使用GetProperty方法獲取指定屬性的PropertyInfo對象,再遞歸地獲取嵌套屬性的PropertyInfo對象,直到達到需要訪問的深層屬性。

以下是一個示例代碼,演示如何使用PropertyInfo實現深層屬性訪問:

using System;
using System.Reflection;

public class Person
{
    public string Name { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person
        {
            Name = "John Doe",
            Address = new Address
            {
                Street = "123 Main St",
                City = "City"
            }
        };

        PropertyInfo propertyInfo = GetDeepPropertyInfo(person, "Address.City");
        if (propertyInfo != null)
        {
            object propertyValue = GetDeepPropertyValue(person, "Address.City");
            Console.WriteLine(propertyInfo.Name + ": " + propertyValue);
        }
    }

    static PropertyInfo GetDeepPropertyInfo(object obj, string propertyName)
    {
        Type type = obj.GetType();
        string[] propertyNames = propertyName.Split('.');

        PropertyInfo propertyInfo = null;
        foreach (string name in propertyNames)
        {
            propertyInfo = type.GetProperty(name);
            if (propertyInfo != null)
            {
                type = propertyInfo.PropertyType;
            }
            else
            {
                return null;
            }
        }

        return propertyInfo;
    }

    static object GetDeepPropertyValue(object obj, string propertyName)
    {
        Type type = obj.GetType();
        string[] propertyNames = propertyName.Split('.');

        object propertyValue = null;
        foreach (string name in propertyNames)
        {
            PropertyInfo propertyInfo = type.GetProperty(name);
            if (propertyInfo != null)
            {
                propertyValue = propertyInfo.GetValue(obj);
                obj = propertyValue;
                type = propertyInfo.PropertyType;
            }
            else
            {
                return null;
            }
        }

        return propertyValue;
    }
}

在上面的示例中,GetDeepPropertyInfo和GetDeepPropertyValue方法分別用于獲取深層屬性的PropertyInfo對象和屬性值。通過使用這兩個方法,可以實現對任意深層屬性的訪問。

0
泸定县| 沙湾县| 安阳县| 大厂| 分宜县| 天水市| 鄂尔多斯市| 蓝田县| 凭祥市| 南宫市| 托克逊县| 蓬溪县| 绥江县| 呼图壁县| 清丰县| 黄平县| 扎赉特旗| 金塔县| 孙吴县| 寿光市| 元谋县| 临泽县| 麦盖提县| 鄯善县| 调兵山市| 武夷山市| 平远县| 芜湖县| 兰坪| 乐山市| 海门市| 庄河市| 安平县| 灵丘县| 太康县| 屏边| 德惠市| 黔江区| 浦东新区| 沙田区| 姜堰市|