我定义了一个用户控件,但是把它拖到窗体上时提示
“属性BookList代码生成失败。......MyBook未标记为可序列化”
我的UserControl1 .cs代码如下,其它全部没改(注:在public class MyBook 
上加上属性[Serializable]仍提示此错误
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;namespace WindowsApplication4
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
            BookList = new List<MyBook>();
        }        private List<MyBook> bookList;
        public List<MyBook> BookList
        {
            get { return bookList; }
            set { bookList = value; }
        }        public class MyBook
        {
            public  int a;
            public int b;
            public MyBook(int a,int b)
            {
                this.a = a;
                this.b = b;
            }
        }
    }
}

解决方案 »

  1.   

    To shangfc(指南针) :
    改成使用数组确实可以,但是不能初始化,否则就出错。我在构造函数里初始化一下,在把控件拖到窗体上时,提示不能为BookList生成代码,因为对象引用没有设置到实例。请问这是为什么啊?应该在哪初始化啊?解决了马上结贴,谢谢了!
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Text;
    using System.Windows.Forms;namespace WindowsApplication3
    {
        public partial class UserControl1 : UserControl
        {
            public UserControl1()
            {
                InitializeComponent();
                // 初始化
                BookList = new MyBook[11];
            }        private MyBook[] bookList;
            public MyBook[] BookList
            {
                get { return bookList; }
                set { bookList = value; }
            }        public class MyBook
            {
                public  int a;
                public int b;
                public MyBook()
                {
                    a = 1;
                    b = 1;
                }
                public MyBook(int a,int b)
                {
                    this.a = a;
                    this.b = b;
                }
            }
        }
    }
      

  2.   

    改成这样的行吗?   
    private MyBook[] bookList={};
    不好意思,我用vb的C#语法不是很熟。另外,建议你用集合,不要用数组。