使用反射修改字符串列表

本文关键字:字符串 列表 修改 反射 | 更新日期: 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>,您可以根据需要进行调整。