添加到构造函数类

时间:2016-10-03 20:19:57

标签: c# class constructor

我很难过。我有一个看起来像这样的构造函数类:

    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并尝试将结果添加到类中。显然,这不起作用。但这是我尝试做的一个例子。第一个&#34; .add&#34;到cCategoryGroup工作得很好,它的构造函数CCategory我也不能像我在注释掉的代码中那样添加。

1 个答案:

答案 0 :(得分: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调用,因此在功能上它们之间没有区别,并且在循环中添加。