2016年6月4日 星期六

使用反射取得物件屬性

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/// <summary>
/// 用反射方式取得屬性
/// <para>Exception:屬性名稱不存在</para>
/// <para>Exception:屬性型態錯誤</para>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj">欲取得屬性的物件</param>
/// <param name="PropertyName">屬性名稱</param>
/// <returns></returns>
private T GetProperty<T>(object obj, string PropertyName)
{
    // 判斷有無該屬性名稱
    PropertyInfo propertyInfo = obj.GetType().GetProperty(PropertyName);
    if (propertyInfo == null)
    {
        throw new Exception("屬性名稱:" + PropertyName + ",不存在。");
    }

    // 判斷型態是否正確
    object tmp = propertyInfo.GetValue(obj);
    if (!(tmp is T))
    {
        throw new Exception("屬性型態錯誤。");
    }

    return (T)tmp;
}

沒有留言 :

張貼留言