编辑代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;


public class userInfo
    {
        public string UserName { get; set; }

        public string PassWord { get; set; }

        /// <summary>
        /// 获取指定属性名称的值
        /// </summary>
        /// <param name="attributeName">属性名称</param>
        /// <returns></returns>
        public object GetValue(string attributeName)
        {
            return this.GetType().GetProperty(attributeName).GetValue(this, null);
        }
        /// <summary>
        /// 设置指定属性名称的值
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="attributeName">属性名称</param>
        /// <param name="value">写入值</param>
        public void SetValue<T>(string attributeName, T value)
        {
            //.NET Framework 4.5以上版本才有此方法重载
            this.GetType().GetProperty(attributeName).SetValue(this, value);
        }

        /// <summary>
        /// 利用反射来判断指定对象是否包含某个属性
        /// </summary>
        /// <param name="instance">指定对象</param>
        /// <param name="propertyName">属性名称</param>
        /// <returns></returns>
        public bool ContainProperty(object instance, string propertyName)
        {
            if (instance != null && !string.IsNullOrEmpty(propertyName))
            {
                PropertyInfo _findedPropertyInfo = instance.GetType().GetProperty(propertyName);
                return (_findedPropertyInfo != null);
            }
            return false;
        }
    }
    
    
class 使用范例
{
    
    private void FrmMain_Load(object sender, EventArgs e)
        {
            userInfo muserInfo = new userInfo();
            muserInfo.UserName = "默认值";
            var propNameVal = muserInfo.GetType().GetProperty("UserName").GetValue(muserInfo, null);
            MessageBox.Show("初始UserName值为:" + propNameVal.ToString());

            var newValue = "七月七日晴";
            muserInfo.GetType().GetProperty("UserName").SetValue(muserInfo, newValue);
            MessageBox.Show("修改之后的UserName值为:" + newValue.ToString());
        }
    
}