Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过字符串标识符获取列表的值_C#_List - Fatal编程技术网

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));