PropertyInfo.SetValue方法为对象的一个Enum类型的属性赋值

liuxiang_1988 2010-10-30 02:19:40
PropertyInfo.SetValue方法为对象的一个Enum类型的属性赋值时就会出现类型转换失败的错误。求教高手这个问题如何解决!!


十分感谢!
...全文
646 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
m5230529 2013-06-19
  • 打赏
  • 举报
回复
引用 9 楼 wuyq11 的回复:
private void GetReaderToObject(IDataReader reader, object targetObj) { for (int i = 0; i < reader.FieldCount; i++) { string columnName = reader.GetName(i); //获取字段名称 object columnValue = reader.GetValue(i); //字段值 PropertyInfo property = targetObj.GetType().GetProperty(columnName); //获取实体对象属性 if (property != null) { if (columnValue != DBNull.Value) { if (property.PropertyType.IsEnum) //属性类型是否表示枚举 { object enumName = Enum.ToObject(property.PropertyType, columnValue); property.SetValue(targetObj, enumName, null); //获取枚举值,设置属性值 } else { property.SetValue(targetObj, columnValue, null); } } } } }
那如果允许为空的枚举怎么判断呢?
m5230529 2013-06-19
  • 打赏
  • 举报
回复
引用 9 楼 wuyq11 的回复:
private void GetReaderToObject(IDataReader reader, object targetObj) { for (int i = 0; i < reader.FieldCount; i++) { string columnName = reader.GetName(i); //获取字段名称 object columnValue = reader.GetValue(i); //字段值 PropertyInfo property = targetObj.GetType().GetProperty(columnName); //获取实体对象属性 if (property != null) { if (columnValue != DBNull.Value) { if (property.PropertyType.IsEnum) //属性类型是否表示枚举 { object enumName = Enum.ToObject(property.PropertyType, columnValue); property.SetValue(targetObj, enumName, null); //获取枚举值,设置属性值 } else { property.SetValue(targetObj, columnValue, null); } } } } }
谢谢
liuxiang_1988 2010-10-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wuyq11 的回复:]
private void GetReaderToObject(IDataReader reader, object targetObj)
{
for (int i = 0; i < reader.FieldCount; i++)
{
string columnName = reader.GetName(i); //获取字段名称
object colum……
[/Quote]

谢谢哈 看样子只能这样了
wuyq11 2010-10-30
  • 打赏
  • 举报
回复
private void GetReaderToObject(IDataReader reader, object targetObj)
{
for (int i = 0; i < reader.FieldCount; i++)
{
string columnName = reader.GetName(i); //获取字段名称
object columnValue = reader.GetValue(i); //字段值
PropertyInfo property = targetObj.GetType().GetProperty(columnName); //获取实体对象属性
if (property != null)
{
if (columnValue != DBNull.Value)
{
if (property.PropertyType.IsEnum) //属性类型是否表示枚举
{
object enumName = Enum.ToObject(property.PropertyType, columnValue);
property.SetValue(targetObj, enumName, null); //获取枚举值,设置属性值
}
else
{
property.SetValue(targetObj, columnValue, null);
}
}
}

}
}
liuxiang_1988 2010-10-30
  • 打赏
  • 举报
回复
顶起!!····
liuxiang_1988 2010-10-30
  • 打赏
  • 举报
回复
这个是model

public class model
{
private string _name;
private Myenum _type;
private DateTime _addtime;

public string Name
{
get { return _name; }
set { _name = value; }
}

public Myenum Type
{
get { return _type; }
set { _type = value; }
}
public DateTime AddTime
{
get { return _addtime; }
set { _addtime = value; }
}

}



这个是调用代码

protected void Page_Load(object sender, EventArgs e)
{
string[,] str = new string[3, 2];
for (int a = 0; a < 2; a++)
{
str[0, a] = "sdf" + a;
str[1, a] = (1 + a).ToString();
str[2, a] = DateTime.Now.ToString();
}

IList<model> list = CreateModelList(str);

Response.Write(list.Count);
}

protected IList<model> CreateModelList(string[,] str)
{

PropertyInfo[] pros = typeof(model).GetProperties();
IList<model> modelList = new List<model>();
for (int b = 0; b < str.GetLength(1); b++)
{
model m = new model();
for (int a = 0; a < pros.Length; a++)
{
pros[a].SetValue(m, str[a, b], null);
}
modelList.Add(m);
}
return modelList;
}

liuxiang_1988 2010-10-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 danjiewu 的回复:]
用Enum.Parse方法把字符串转化为你的枚举值后再赋给Property
[/Quote]
可是我这个是在泛型生成model里面用到的。 其他的属性不全是Enum类型的!
danjiewu 2010-10-30
  • 打赏
  • 举报
回复
用Enum.Parse方法把字符串转化为你的枚举值后再赋给Property
liuxiang_1988 2010-10-30
  • 打赏
  • 举报
回复
顶起来~~~~~!
liuxiang_1988 2010-10-30
  • 打赏
  • 举报
回复
顶起来 ,!!!
liuxiang_1988 2010-10-30
  • 打赏
  • 举报
回复
phil999 2010-10-30
  • 打赏
  • 举报
回复
怎么失败的,贴上来看看
内容概要:本文提出了一种基于氢储能的热电联供型微电网优化调度方法,并配套提供了Matlab代码实现。该方法通过引入氢储能系统,有效提升了微电网对风能、光伏等可再生能源的消纳能力与供能可靠性,解决了热电负荷强耦合、多能源设备协调运行以及系统经济性与稳定性之间的多目标平衡难题。研究构建了包含光伏发电、风力发电、燃料电池、电解槽、储氢罐、燃气锅炉等多种能源转换与存储设备的综合能源系统模型,采用先进的优化算法进行日前调度仿真,实现了能源供给与负荷需求的高效匹配,降低了运行成本和弃风弃光率。仿真结果验证了该策略在提升能源综合利用效率、增强系统韧性与低碳运行方面的显著优势。; 适合人群:具备电力系统、能源系统等相关领域基础知识,熟悉Matlab编程环境与数学优化建模方法的高校研究生、科研人员,以及从事微电网、综合能源系统、氢能利用等方向的工程技术人员。; 使用场景及目标:①用于教学与科研中深入理解氢储能技术在微电网中的集成机理与调度逻辑,并开展仿真验证;②为实际工程中氢储能系统的容量配置、运行策略设计及多能协同优化提供理论依据与技术支持;③支撑高水平学术论文复现、科研课题申报及综合能源项目原型开发。; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,细致剖析模型构建、约束设定与求解流程,掌握优化算法的应用技巧,并可在现有基础上拓展至多目标优化、鲁棒优化或结合机器学习进行负荷与新能源出力预测,以进一步提升调度模型的实用性与前瞻性。

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧