1、通過反射機制擷取對象屬性和屬性值,以及給對象屬性指派。
2、反射工具代碼
/// <summary>
/// 反射工具
/// </summary>
public static class ReflexHelper
{
#region 對象相關
/// <summary>
/// 取對象屬性值
/// </summary>
/// <param name="FieldName"></param>
/// <param name="obj"></param>
/// <returns></returns>
public static string GetModelValue(string FieldName, object obj)
{
try
{
Type Ts = obj.GetType();
object o = Ts.GetProperty(FieldName).GetValue(obj, null);
if (null == o)
return null;
string Value = Convert.ToString(o);
if (string.IsNullOrEmpty(Value))
return null;
return Value;
}
catch (Exception ex)
{
throw ex;
}
return null;
}
/// <summary>
/// 設定對象屬性值
/// </summary>
/// <param name="FieldName"></param>
/// <param name="Value"></param>
/// <param name="obj"></param>
/// <returns></returns>
public static 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 (Exception ex)
{
throw ex;
}
return false;
}
#endregion
}
3、簡單對象
public class User
{
public int Id { get; set; }
public string UserName { get; set; }
}
4、測試:
static void Main(string[] args)
{
User user = new User
{
Id = 100,
UserName = "Ace"
};
//擷取屬性值
var id = ReflexHelper.GetModelValue("Id",user);
//設定屬性值
User setUser = new User();
ReflexHelper.SetModelValue("UserName", "Test", setUser);
Console.ReadLine();
}