如何在c#中使用反射获取列表类型元素

技术人员134

我有一个类:Transaction.cs

public class Transaction
{
    public int Transaction_id  { get; set; }
    public string Description { get; set; }
    public string Item { get; set; }
}

我也想使用反射来获取交易集合中的值,即:

var db = new List<Transaction>();
var temp = new Transaction { Transaction_id = 123, Item = "AKP", Description = "Startup" };
var info = temp.GetType().GetProperties();
db.Add(new Transaction { Transaction_id = 45, Item = "RW", Description = "Starting" });
var type = typeof(Transaction);
var prop = type.GetProperty("Item");
var value = prop.GetValue(temp);

在属性上添加了这个循环代码:

foreach (var testing in db.GetType().GetProperties())
{
    var sample = testing.GetValue(db);
    Console.WriteLine(sample);
}

我在命令行中显示的值为 4。

这会给我 AKP 在屏幕上的价值。现在当我有一个交易列表时它是如何工作的?

谢谢

约翰吴

泛型列表是类型安全的,因此您不需要使用反射。

要遍历列表,请使用foreach.

var db = new List<Transaction>
{
    new Transaction { Transaction_id = 123, Item = "AKP", Description = "Startup" }, 
    new Transaction { Transaction_id = 45, Item = "RW", Description = "Starting" }
}
foreach (var transaction in db)
{
    Console.WriteLine(transaction.Item);
}

输出:

AKP
RW

如果你真的需要使用反射,并且这种事情在你的代码库中很常见,我会花时间写一个像这样的扩展方法:

static T GetPropertyByName<T>(this object input, string name) 
{
    return (T)input
        .GetType()
        .GetProperty(name, BindingFlags.Instance)
        .GetValue(input);
}

并像这样使用它:

foreach (var transaction in db)
{
    Console.WriteLine(transaction.GetPropertyByName<string>("Item"));
}

或者,如果您事先不知道属性的名称:

foreach (var row in db)
{
    foreach (var p in row.GetType().GetProperties(BindingFlags.Instance))
    {
        Console.WriteLine(p.GetValue(row));
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C#中使用反射获取类型的全限定名称

来自分类Dev

如何在C#中使用反射获取从方法调用的方法列表

来自分类Dev

如何在C#中使用反射从类型和设置属性值中按名称获取属性

来自分类Dev

如何在OCaml中使用自己的元素类型打印列表?

来自分类Dev

如何在Android项目中使用java反射获取超类中的子类列表

来自分类Dev

如何使用反射获取特定类型的通用列表

来自分类Dev

如何在Kotlin中使用反射获取函数引用

来自分类Dev

如何在WinRT中使用反射获取类的静态属性

来自分类Dev

如何在C#中使用反射获取方法的所有属性和属性数据

来自分类Dev

如何在C#中使用反射获取Json属性名称

来自分类Dev

使用反射获取列表属性类型

来自分类Dev

如何在输入类型的python中使用webdriver selenium选择下拉列表元素?

来自分类Dev

如何在不使用C#中使用反射的情况下从该方法内部获取方法名称

来自分类Dev

如何使用反射递归获取类型的属性?

来自分类Dev

如何使用反射获取/设置数组元素?

来自分类Dev

如何在python中使用minidom获取元素值并将其存储到列表中?

来自分类Dev

如何在C ++中使用类型特征获取函数参数的类型?

来自分类Dev

如何在Julia中使用列表元素启动列表?

来自分类Dev

如何在FluentValidation中使用反射?

来自分类Dev

如何在反射中使用递归?

来自分类Dev

如何在FluentValidation中使用反射?

来自分类Dev

PHP在Hack中使用反射获取通用类型

来自分类Dev

PHP在Hack中使用反射来获取通用类型

来自分类Dev

如何在Scala中使用反射获取所有对象值和子对象值?

来自分类Dev

如何在Scala中使用反射获取所有对象值和子对象值?

来自分类Dev

如何使用反射库获取子类型的子类型

来自分类Dev

如何在c中使用自定义类型从节点列表中读取数据结构

来自分类Dev

如何在C#中使用CSS选择器定位Web元素列表

来自分类Dev

反射-如何在类型列表之间进行比较

Related 相关文章

  1. 1

    如何在C#中使用反射获取类型的全限定名称

  2. 2

    如何在C#中使用反射获取从方法调用的方法列表

  3. 3

    如何在C#中使用反射从类型和设置属性值中按名称获取属性

  4. 4

    如何在OCaml中使用自己的元素类型打印列表?

  5. 5

    如何在Android项目中使用java反射获取超类中的子类列表

  6. 6

    如何使用反射获取特定类型的通用列表

  7. 7

    如何在Kotlin中使用反射获取函数引用

  8. 8

    如何在WinRT中使用反射获取类的静态属性

  9. 9

    如何在C#中使用反射获取方法的所有属性和属性数据

  10. 10

    如何在C#中使用反射获取Json属性名称

  11. 11

    使用反射获取列表属性类型

  12. 12

    如何在输入类型的python中使用webdriver selenium选择下拉列表元素?

  13. 13

    如何在不使用C#中使用反射的情况下从该方法内部获取方法名称

  14. 14

    如何使用反射递归获取类型的属性?

  15. 15

    如何使用反射获取/设置数组元素?

  16. 16

    如何在python中使用minidom获取元素值并将其存储到列表中?

  17. 17

    如何在C ++中使用类型特征获取函数参数的类型?

  18. 18

    如何在Julia中使用列表元素启动列表?

  19. 19

    如何在FluentValidation中使用反射?

  20. 20

    如何在反射中使用递归?

  21. 21

    如何在FluentValidation中使用反射?

  22. 22

    PHP在Hack中使用反射获取通用类型

  23. 23

    PHP在Hack中使用反射来获取通用类型

  24. 24

    如何在Scala中使用反射获取所有对象值和子对象值?

  25. 25

    如何在Scala中使用反射获取所有对象值和子对象值?

  26. 26

    如何使用反射库获取子类型的子类型

  27. 27

    如何在c中使用自定义类型从节点列表中读取数据结构

  28. 28

    如何在C#中使用CSS选择器定位Web元素列表

  29. 29

    反射-如何在类型列表之间进行比较

热门标签

归档