C#反射設定屬性值和獲取屬性值

風靈使發表於2018-08-14
        /// 
        /// 獲取類中的屬性值
        /// 
        /// 
        /// 
        /// 
        public string GetModelValue(string FieldName, object obj)
        {
            try
            {
                Type Ts = obj.GetType();
                object o = Ts.GetProperty(FieldName).GetValue(obj, null);
                string Value = Convert.ToString(o);
                if (string.IsNullOrEmpty(Value)) return null;
                return Value;
            }
            catch
            {
                return null;
            }
        }
        /// 
        /// 設定類中的屬性值
        /// 
        /// 
        /// 
        /// 
        public bool SetModelValue(string FieldName,string Value, object obj)
        {
            try
            {
                Type Ts = obj.GetType();
                object v = Convert.ChangeType(Value, Ts.GetProperty(FieldName).PropertyType);
                Ts.GetProperty(FieldName).SetValue(obj, v, null);
                return true;
            }
            catch
            {
                return false;
            }
        }

在網上找沒有找到,剛自己寫了一個方法,供分享.

在寫方法時這裡有一個東西弄了很久沒有搞好.就是屬性型別如果是int 時,傳入string字串就會設定不成功.

這裡我用到了Convert.ChangeType 轉換,根據屬性型別自動轉換.

相關文章