C#Metro无法从List <object> </object>访问对象属性

时间:2013-06-15 21:29:42

标签: c# windows-8 microsoft-metro

尝试使用C#和XAML构建Windows 8应用程序。

我创建了一个类:

class Tile
{
    public Tile(int ID, string Name, double Frequency, double Divider, int Value, int Turns, int StartLevel)
    {
        this.ID = ID;
        this.Name = Name;
        this.Frequency = Frequency;
        this.Divider = Divider;
        this.Value = Value;
        this.Turns = Turns;
        this.StartLevel = StartLevel;
    }

    private int ID { get; set; }
    private string Name { get; set; }
    private double Frequency { get; set; }
    private double Divider { get; set; }
    private int Value { get; set; }
    private int Turns { get; set; }
    private int StartLevel { get; set; }
}

我已将对象添加到列表中:

List<Tile> tList = new List<Tile>();

tList.Add(new Tile(0, "Example1", 0.08, 1.00, 0, 7, 1));
tList.Add(new Tile(1, "Example2", 0.21, 1.25, 0, 0, 1));

使用标准C#时,我可以访问对象的属性,如:

foreach (Tile t in tList)
{
    int test = t.ID;
}

问题: 在我上面的foreach声明中,当我输入“t”时。这个可用元素列表中出现的所有内容是:

等于 GetHashCode的 的GetType 的ToString

我期待: 出现以下元素:

ID 名称 频率 分频器 值 圈 STARTLEVEL

我在这里缺少什么?

1 个答案:

答案 0 :(得分:4)

您的Tile类中的属性设置为private。为了能够从课外访问属性,您需要将它们声明为public:

public class Tile
{
    public int ID { get; set; }
    public string Name { get; set; }
    public double Frequency { get; set; }
    public double Divider { get; set; }
    public int Value { get; set; }
    public int Turns { get; set; }
    public int StartLevel { get; set; }
}

你可以保留相同的构造函数,尽管在添加/减去属性时最终会变得很乱。另一种可以实例化Tile对象列表的方法是:

List<Tile> tList = new List<Tile>
{
    new Tile
    {
       ID = 0,
       Name = "Example1"
    }
};

...您需要设置多个公共属性。