例
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的? 等等...
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);
}
的对象的“name”是既不"Test1"
,也不是"MyItems[0]"
。
这两个都只是对象的引用,也就是实际上,无名。
我不知道给定对象在C#中的任何技术,可以给你所有的对象引用的,所以我不认为你想要什么是可能的,你想要的方式它。
您可以使用此代码访问的属性的名称(请参阅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);
}
但是现在我不知道任何代码 访问的参考的名字 !