SetPropertyValue 给对象的属性赋值


  SetPropertyValue 给对象的属性赋值

C# Code:


/// <summary>
/// 给对象的属性赋值
/// </summary>
/// <param name="instance">对象实例</param>
/// <param name="prop">对象实例的属性信息</param>
/// <param name="value">其他对象属性的值</param>
public static void SetPropertyValue(object instance, PropertyInfo prop, object value)
{
  
try
  {
    
if (prop == null) return;
    
    
if (prop.PropertyType.IsArray)//数组类型,单独处理
    
{
    
if (value == DBNull.Value)//特殊处理DBNull类型
    
prop.SetValue(instance, null, null);
    
else
    prop.SetValue(instance, value,
null);
  }
  
else
  {
    
if (value == null || String.IsNullOrWhiteSpace(value.ToString()))//空值
    
value = prop.PropertyType.IsValueType ? Activator.CreateInstance(prop.PropertyType) : null;//值类型
    
else
    value
= System.ComponentModel.TypeDescriptor.GetConverter(prop.PropertyType).ConvertFromString(value.ToString());//创建对象
    

    prop.SetValue(instance, value,
null);
  }
}
catch (Exception ex) //报错在此跟踪
{
}
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761





版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
上一篇:Activator.CreateInstance 使用指定类型的默认构造函数来创建该类型的实例
下一篇:IniFile 操作INI文件类 C#
评论列表

发表评论

评论内容
昵称:
关联文章

SetPropertyValue 对象属性赋值
通过.NET反射动态调用SetValue方法属性PropertyInfo赋值
C# 绑定数据源文本框.Text属性赋值,但没有保存数据
C# 克隆对象、复制对象(浅拷贝)、复制对象相同属性
C# DataGridView 自动新增记录当前单元格赋值
绑定数据源文本输入框TextEdit.Text或EditValue属性赋值,失去焦点文本自动清空了
EditValueChanged事件,另外文本框赋值,为什么事件本身值赋不值
LookupEdit.EditValueChanged事件内其它文本框赋值无效或变回原来
控件属性是个类,如何添加自定义属性(C#)
C# 控件属性是个类,如何添加自定义属性
C#.NETDataTable日期类型赋值报错:所需类型是 MySqlDateTime,值类型与列类型不匹配
标签:C#.Net组件开发 - 自定义属性编辑器持久化对象属性
WebApi返回ModelResponse对象Data属性数据加密或不加密
标签:C#.Net组件开发 - 自定义设计器持久化对象属性
C#.NET扩展动态对象支持动态属性和方法以及Json格式与对象互转
C# LINQ使用Distinct方法检查对象某个属性值是否重复
数据字典BLL.CreateDataBinder方法实现新增记录主键赋值
通过反射技术创建窗体实例然后控件赋值(C#)
C# 一个简单面向对象例子
对象属性若使用get;set;访问器没有指定成员变量,代码混淆后会丢失数据