2016-10-03 52 views
0

我很難過。我有一個構造函數的類,看起來像這樣:添加到構造類

class CClasses 
{ 
    public class CCategoryGroup : List<CCategory> 
    { 
     public string CTitle { set; get; } 
     public string CShortTitle { set; get; } 
     public CARESCategoryGroup(string ctitle, string cshorttitle) 
     { 
      this.CTitle = ctitle; 
      this.CShortTitle = cshorttitle; 
     } 
    }; 

    public class CCategory 
    { 
     public int CID { set; get; } 
     public string CName { set; get; } 
     public ImageSource CIcon { set; get; } 
     public string CUrl { set; get; } 
     public CCategory(int cid, string cname, ImageSource cicon, string curl) 
     { 
      this.CID = cid; 
      this.CName = cname; 
      this.CIcon = cicon; 
      this.CUrl = curl; 
     } 
    }; 
} 

我要添加到類的構造函數部分,像這樣:

  //List<CCategoryGroup> ccategory = new List<CCategoryGroup> 
     //{ 
     // new CCategoryGroup("Dolphin", "Dolphin Group") 
     // { 
     //  new CCategory(1, "Bear", ImageSource.FromFile("bear.png")), 
     //  new CCategory(2, "Elephant", ImageSource.FromFile("elephant.png")), 
     //  new CCategory(3, "Dog", ImageSource.FromFile("dog.png")), 
     //  new CCategory(4, "Cat", ImageSource.FromFile("cat.png")), 
     //  new CCategory(5, "Squirrel", ImageSource.FromFile("squirrel.png")) 
     // }, 

我的問題是我想加入到這個類通過一個循環。所以我很容易能夠與添加CCategoryGroup:

cCategory.Add(new CCategoryGroup(name, value) 

如何添加到CCategory構造如前所示?

foreach (XElement catelement in xmlDoc.Descendants(xmlNS + "Category")) 
     { 

      cCategory.Add(new CCategoryGroup(catelement.Element(xmlNS + "Name").Value, catelement.Element(xmlNS + "Name").Value){ 
       foreach (XElement subcatelement in xmlDoc.Descendants(xmlNS + "SubCategory")) 
       { 
        i++; 

        new CCategory(i, subcatelement.Element(xmlNS + "Name").Value, "", subcatelement.Element(xmlNS + "URL").Value); 
       } 
      }); 
     } 

我解析XML並嘗試將結果添加到類中。顯然這不起作用。但是我正在嘗試做的一個樣本。對cCategoryGroup的第一個「.add」效果很好,它的構造函數CCategory我不能像在註釋掉的代碼中那樣添加。

+0

你可以編譯的是將缺少的第四個參數添加到'CCategory'構造函數調用中。你在尋找不同的東西還是不適合你? –

+3

也停止用'C'預處理所有內容。它使得類和參數名難以閱讀,而且在強類型語言中不是必需的。 –

+0

是的,我期待通過循環運行它。我知道註釋掉的代碼有效,但我基本上試圖使用「.add」添加到類和構造函數中。我如何使用「.add」添加到構造函數中? –

回答

0

不,你不能將集合初始化像中使用一個循環,但你可以做到這一點沒有初始化:

foreach (XElement catelement in xmlDoc.Descendants(xmlNS + "Category")) 
{ 

    CCategoryGroup categoryGroup = new CCategoryGroup(catelement.Element(xmlNS + "Name").Value, catelement.Element(xmlNS + "Name").Value; 
    cCategory.Add(categoryGroup); 

    foreach (XElement subcatelement in xmlDoc.Descendants(xmlNS + "SubCategory")) 
    { 
     i++; 
     categoryGroup.Add(new CCCategory(i, subcatelement.Element(xmlNS + "Name").Value, "", subcatelement.Element(xmlNS + "URL").Value)); 
    } 
} 

注意,一個初始化剛剛被翻譯成由一系列Add電話編譯器,所以功能上和循環中添加沒有區別。

+0

非常感謝! –