Можно ли перечислить все наши имена и значения строковых переменных - PullRequest
8 голосов
/ 07 мая 2011

Можно перечислить наши имена переменных из экземпляра и его значение.

  public class Car
  {
    public string Color;
    public string Model;
    public string Made;
  }

  protected void Page_Load(object sender, EventArgs e)
  {

//Create new instance
    Car MyCar = new Car();
    MyCar.Color = "Red";
    MyCar.Model = "NISSAN";
    MyCar.Made = "Japan";

//SOMETHING HERE
    foreach (MyCar Variable in MyCar)
    {
      Response.Write("<br/>Variable Name"+  "XXX"+ "Variable Value");
    }

}

Ответы [ 4 ]

6 голосов
/ 07 мая 2011

Попробуйте что-то вроде этого:

using System;

class Car
{
    public string Color;
    public string Model;
    public string Made;
}

class Example
{
    static void Main()
    {
        var car = new Car
        {
            Color = "Red",
            Model = "NISSAN",
            Made = "Japan"
        };

        foreach (var field in typeof(Car).GetFields())
        {
            Console.WriteLine("{0}: {1}", field.Name, field.GetValue(car));
        }
    }    
}
5 голосов
/ 07 мая 2011

Для этого вам понадобится Reflection.Здесь вы можете увидеть похожий вопрос: Как получить список всех открытых переменных, которые у меня есть в классе?(C #) .

Исходя из этого, я думаю, что ваш случай будет решен с помощью этого кода:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    FieldInfo[] myFieldInfo;
    Type myType = typeof(Car);

    myFieldInfo = myType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);

    string result = @"The String fields of Car class are:";

    for (int i = 0; i < myFieldInfo.Length; i++)
    {
        if (myFieldInfo[i].FieldType == typeof(String))
        {
            result += "\r\n" + myFieldInfo[i].Name;
        }
    }

    MessageBox.Show(result);
}

public class Car
{
    public string Color;
    public string Model;
    public string Made;
}
4 голосов
/ 07 мая 2011

Это можно сделать с помощью отражения. Но если вы хотите перечислить все, что содержится в вашем классе, вы можете просто использовать словарь и перечислить это.

3 голосов
/ 07 мая 2011

Примерно так:

foreach (var prop in typeof(Car).GetProperties())
{
  Response.Write(prop.Name + ": " + prop.GetValue(MyCar, null) ?? "(null)");
}
...