使用反射修改字符串列表
本文关键字:字符串 列表 修改 反射 | 更新日期: 2023-09-27 18:32:40
说,我有一个类用户,它有(字符串名字,列出兄弟姐妹)我想修改用户的属性。
假设我想用 b 而不是 a 替换字符串。
用户 : {名字:"拉格",兄弟姐妹 : {"斯大林","马克思"} }
使用反射,我需要读取各个字符串,以下内容将是输出对象。
用户 : {名字:"Rbger",兄弟姐妹 : {"斯特布林","唰"} }
让我们考虑以下函数
private object modifyObject(object t){
foreach(var propertyInfo in t.GetType.GetProperties(){
var stringToBeModified = propertyInfo.GetValue(t,null);
propertyInfo.SetValue(t, stringToBeModified.replace("a","b"),null)
}
}
上面的代码在修改名字时工作正常。但是不知道如何修改同级中的字符串。
我想我会使用第三个属性(索引属性的可选索引值)。但看起来整个属性都没有被索引。对于同级,propertyInfo.GetValue(t,null) 给出 2 个字符串。
[0] -- stalin
[1] -- Marx.
谁能告诉我在使用属性信息获取值后如何修改上述 2 个字符串?
您可以
简单地将值转换为List<string>
并根据需要进行更新
例如
List<string> list = (List<string>)propertyInfo.GetValue(t,null);
list[0] = list[0].replace("a","b");
上面的示例假设兄弟姐妹的属性信息类型为 List<string>
,您可以根据需要进行调整。