获得一个属性的名称列表中(Getting the name of a property in a l

2019-07-31 04:42发布

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()等。但是,这并不工作。

我怎样才能找出名称“项”了? Test1的? Test2的? 等等...

Answer 1:

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


Answer 2:

的对象的“name”是既不"Test1" ,也不是"MyItems[0]"

这两个都只是对象的引用,也就是实际上,无名。

我不知道给定对象在C#中的任何技术,可以给你所有的对象引用的,所以我不认为你想要什么是可能的,你想要的方式它。



Answer 3:

您可以使用此代码访问的属性的名称(请参阅MSDN )

Type myType =(typeof(MyTypeClass));
// Get the public properties.
PropertyInfo[] myPropertyInfo = myType.GetProperties(BindingFlags.Public|BindingFlags.Instance);

for(int i=0;i<myPropertyInfo.Length;i++)
{
    PropertyInfo myPropInfo = (PropertyInfo)myPropertyInfo[i];
    Console.WriteLine("The property name is {0}.", myPropInfo.Name);
    Console.WriteLine("The property type is {0}.", myPropInfo.PropertyType);
}

但是现在我不知道任何代码 访问的参考的名字



文章来源: Getting the name of a property in a list