C# 通过字符串标识符获取列表的值
我想通过用字符串标识对象来获取列表中某个项的值C# 通过字符串标识符获取列表的值,c#,list,C#,List,我想通过用字符串标识对象来获取列表中某个项的值 string A ="some_string"; listobject.Add(fruit[0].A); 它不接受listobject.Addfruit[0].A;作为标识符从技术上讲,您可以尝试使用反射,即通过名称查找属性: 然后您可以按如下方式使用它: listobject.Add(PropertyReader<string>(fruit[0], A)); 不清楚你在问什么或想实现什么你需要用反思来实
string A ="some_string";
listobject.Add(fruit[0].A);
它不接受listobject.Addfruit[0].A;作为标识符从技术上讲,您可以尝试使用反射,即通过名称查找属性: 然后您可以按如下方式使用它:
listobject.Add(PropertyReader<string>(fruit[0], A));
不清楚你在问什么或想实现什么你需要用反思来实现,但这通常是个坏主意。你想解决什么问题?这个问题有点含糊不清,但似乎你可能想以某种方式使用字典。我想最简单的方法是将水果[0]添加到rutten_水果中。如果确实要添加字符串,请将rutten\u fruit改为列表。是否要获取由fruit[0]指示的属性的值。a?类似于typeofruit.GetPropertyA.GetValuemyInstance的东西?谢谢Dmitry!!即使我的问题不是很清楚,你也能找到我想要的。这就是我所说的专家!:非常感谢。
using System.Reflection;
...
private static T PropertyReader<T>(object value, string name) {
if (null == value)
throw new ArgumentNullException(nameof(value));
else if (null == name)
throw new ArgumentNullException(nameof(name));
var prop = value.GetType().GetProperty(name);
if (null == prop || !prop.CanRead)
throw new ArgumentException($"property {name} has not been found.", nameof(name));
return (T)(Convert.ChangeType(prop.GetValue(value, new object[0]), typeof(T)));
}
listobject.Add(PropertyReader<string>(fruit[0], A));