c# - 获取列表中的属性名称

标签 c# reflection properties

示例

public class MyItems
{
    public object Test1  {get ; set; }
    public object Test2  {get ; set; }
    public object Test3  {get ; set; }
    public object Test4  {get ; set; }
    public List<object> itemList
    {
        get
        {
            return new List<object>
            {
                Test1,Test2,Test3,Test4
            }
        }
    }
}

public void LoadItems()
{
    foreach (var item in MyItems.itemList)
    {
        //get name of item here (asin,  Test1, Test2)
    }
}

**

我已经用反射尝试过这个..asin typeof(MyItems).GetFields() 等..但这不起作用。

如何找出“item”的名称?测试1?测试2??等等...

最佳答案

 var test = typeof(MyItems).GetProperties().Select(c=>c.Name);

上面将为您提供一个可枚举的属性名称。 如果您想获取列表中属性的名称,请使用:

var test = typeof(MyItems).GetProperties().Select(c=>c.Name).ToList();

编辑:

从您的评论中,您可能正在寻找:

 foreach (var item in m.itemList)
    {
        var test2 = (item.GetType()).GetProperties().Select(c => c.Name);
    }

关于c# - 获取列表中的属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12142332/

相关文章:

javascript - 将 JavaScript 移植到 C#(存储在数组中的函数)

c# - 给定 "where T : new()", "new T()"是否在内部使用 Activator.CreateInstance?

c# - 需要 n 层架构反馈

c# - 升级到 .NET Framework 4.8 时出现程序集绑定(bind)问题

c# - 获取方法的集合

python - 枚举Python类属性(不是函数)

C# 6.0 默认初始化

c# - 访问和设置数组类型属性

c# - 对 CancellationTokenSource.Cancel 的调用永远不会返回

java - 如何使用反射从另一个项目访问类内部的枚举?