2015-08-25 234 views
1

我有一個枚舉類的問題。我在互聯網和Stackoverflow上搜索了所有內容,但是恐怕我對C#的有限經驗使我無法認識到確切的情況和解決方案。我的代碼有:C#類屬性枚舉

public List<annotation> annotations = new List<annotation>(); 

public class annotation 
{ 
    public annotation(int pos, int x2, int y2, string artnr) 
    { 
     this.ArtNr = artnr; 
     this.Pos = pos; 
     this.X2 = x2; 
     this.Y2 = y2; 
    } 
    public string ArtNr; 
    public int Pos; 
    public int X2; 
    public int Y2; 


} 

public void add_Anno(string artnr, int x2, int y2) 
{ 
    annotations.Add(new annotation(0,x2,y2,artnr)); 
} 

添加註釋斷絕後,我想在WPF Canvas對象,以顯示它們。問題是我無法遍歷列表中的所有項目。我的問題是我應該使用哪種方法進行枚舉以及如何應用它?該列表包含整數和字符串。我試圖使用:

System.Collections.IEnumerator ie = annotations.GetEnumerator(); 
while(ie.MoveNext()) 
{ 
    annotation test = ie.GetType().GetProperties(); 
} 

同時我正在看「Microsoft Press考試7--483」中的反思,看看這是否是一種解決方案。

謝謝。

回答

5

您只需要使用foreach,它會迭代列表中的每個元素。有沒有必要使用反射:

foreach (var annotation in annotations) 
{ 
    int position = annotation.Pos; 
    string atrNr = annotation.ArtNr; 
} 

作爲一個側面說明,我會建議你看看C# Naming Conventions,也許學習有關Properties

快速重構應該是這樣的:

public class Annotation 
{ 
    public Annotation(int pos, int x2, int y2, string artNr) 
    { 
     this.ArtNr = artNr; 
     this.Pos = pos; 
     this.X2 = x2; 
     this.Y2 = y2; 
    } 

    public string ArtNr { get; private set; } 
    public int Pos { get; private set; } 
    public int X2 { get; private set; } 
    public int Y2 { get; private set; } 
} 

如果您使用C#6,則可以刪除private set

+0

謝謝,首先我有一個Enumerable錯誤,但它似乎添加枚舉是沒有必要的。 – OwnageKTS