2

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

**

私はリフレクションでこれを試しました..asintypeof(MyItems).GetFields()など..しかし、それはうまくいきません。

「アイテム」の名前を調べるにはどうすればよいですか? テスト1? テスト2?? 等...

4

3 に答える 3

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);
    }
于 2012-08-27T12:55:27.647 に答える
1

オブジェクトの「名前」は"Test1"、でも。でもありません"MyItems[0]"

これらは両方ともオブジェクトへの単なる参照であり、事実上、名前はありません。

オブジェクトが与えられた場合に、オブジェクトへのすべての参照を提供できるC#の手法を私は知らないので、あなたが望む方法で、あなたが望むことが可能であるとは思いません。

于 2012-08-27T12:54:37.537 に答える
0

このコードでプロパティの名前にアクセスできます ( 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);
}

しかし、今のところ、参照の名前にアクセスするコードがわかりません!

于 2012-08-27T12:58:14.887 に答える