person p = new person();
//我有一个xml配置文件,存储了类的属性名称和属性值,运行时读取属性和值,赋值给对象 var info = p.GetType().GetProperty("birthday");//这里模拟从配置文件读取属性名称
if (info != null)
{
//设置属性的值
info.SetValue(p, "2008-1-1", null);
}
我从配置文件中读取的值都是字符串,因为我这个配置文件里存储的不仅仅是一个对象的信息,而是涉及到很多对象
而对象的属性可能涉及各种类型,如int decimal datetime。
这样我在执行上面的代码时遇到属性是int或其它的 就会出错
那我应该怎么做呢?总不能赋值前把所有的对象类型都判断一下吧?
//我有一个xml配置文件,存储了类的属性名称和属性值,运行时读取属性和值,赋值给对象 var info = p.GetType().GetProperty("birthday");//这里模拟从配置文件读取属性名称
try{
if (info != null)
{
//设置属性的值
info.SetValue(p, "2008-1-1", null);
}
}
catch
{
//如果类型不匹配进行其它操作
}
//我有一个xml配置文件,存储了类的属性名称和属性值,运行时读取属性和值,赋值给对象 var info = p.GetType().GetProperty("birthday");//这里模拟从配置文件读取属性名称
try{
if (info != null)
{
//设置属性的值
info.SetValue(p, "2008-1-1", null);
}
}
catch
{
//如果类型不匹配进行其它操作
}
- <root>
- <BaseInfo>
<Base DataSetID="e34aede627a8420f94f8bb37d9a6386d" DataSetName="11111" DataSetPath="D:\Edit\e34aede627a8420f94f8bb37d9a6386d\反冲起动轴组合-ok.dwg" CheckUser="Admin" ItemID="d6645df6-6bfa-4845-b065-82380fc7b31c" ItemName="11111" FormTableName="DT_PSE" />
</BaseInfo>
- <ItemInfo>
<Item Guid="d6645df6-6bfa-4845-b065-82380fc7b31c" ID="d6645df6-6bfa-4845-b065-82380fc7b31c" ItemCode="11111" ItemName="11111" Item_type="2b321382-84eb-4771-9efe-c64136143344" Item_Version="A" />
</ItemInfo>
- <FormInfo>
<Form Guid="a7156d14-b4fe-493c-8291-0bc1f59d38ff" name="ffff" age="0" birthdate="2009-9-12 13:48:55" />
</FormInfo>
- <DataSetInfo>
<DataSet Guid="e34aede627a8420f94f8bb37d9a6386d" DatasetID="e34aede627a8420f94f8bb37d9a6386d" DatasetName="11111" CheckOutPath="D:\Edit\e34aede627a8420f94f8bb37d9a6386d\反冲起动轴组合-ok.dwg" CheckOutStatus="1" CheckOutUserID="Admin" />
</DataSetInfo>
<BomInfo />
</root>这是我的配置文件,这里面涉及了4个对象 有 Item Form DataSet Bom 我要读取出来
然后给那4个对象赋值。那我怎么在xml中控制类型啊
况且我这个xml文件的属性也不是固定的,是由另外一个配置文件配置的
代码: var info = p.GetType().GetProperty("birthday");// var temp = Convert.ChangeType("2009-09-08 12:12:12", info.PropertyType); if (info != null)
{
info.SetValue(u, temp, null);
}