2016-10-03 3 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 생성자에 추가하려면 어떻게
cCategory.Add(new CCategoryGroup(name, value) 

?

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을 구문 분석하고 결과를 클래스에 추가하려고합니다. 이것은 분명히 작동하지 않습니다. 그러나 내가하려는 일의 표본입니다. 첫 번째 ".add"to cCategoryGroup은 훌륭하게 작동합니다. 생성자 CCategory 주석 처리 된 코드에서 수행 한 방식을 추가 할 수 없습니다.

+0

컴파일해야 할 것은 'CCategory' 생성자 호출에 누락 된 네 번째 매개 변수를 추가하는 것입니다. 당신이 뭔가 다른 것을 찾고 있습니까 아니면 당신을 위해 작동하지 않습니까? –

+3

또한 모든 것을'C '로 시작하는 것을 멈 춥니 다. 클래스 및 매개 변수 이름을 읽기가 어렵게 만들고 강력한 형식의 언어에서는 필요하지 않습니다. –

+0

예, 루프를 통해 실행하려고합니다. 나는 주석 처리 된 코드가 작동한다는 것을 알고 있지만 기본적으로 ".add"를 사용하여 클래스와 생성자에 추가하려고합니다. ".add"를 사용하여 생성자에 어떻게 추가합니까? –

답변

0

는 아니, 그런 컬렉션 이니셜 라이저 내에서 루프를 사용할 수 있지만, 당신은 초기화없이 작업을 수행 할 수 있습니다

이니셜 라이저는 단지 Add의 일련의 호출에 의해 번역됩니다
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)); 
    } 
} 

하는 것으로 컴파일러이므로 기능적으로는 루프와 루프 사이에 아무런 차이가 없습니다.

+0

정말 고마워요! –