用IList<T>接口定义了个点的集合类,在使用的时候虽然集合内点值改变了,但是在外面的属性却捕捉不到,请教下有没有办法解决
代码如下PointList pointlist = new PointList();
        public PointList Pointlist
        {
            get { return pointlist; }
            set
            {
                pointlist = value;
                Function();//无法执行到这里
            }
        }

解决方案 »

  1.   


    这里说的改变只是改变了Pointlist属性中的属性吧,没有改变Pointlist整个属性的引用吧?
      

  2.   

    看看代码吧Class A
    {
            PointList pointlist = new PointList();
            public PointList Pointlist
            {
                get { return pointlist; }
                set
                {
                    pointlist = value;
                    Fun();
                }
            }
    }
    Class B
    {
           A a = new A();
           //注意以下操作都不会触发Pointlist的set方法
           a.Pointlist.Add(something);
           a.Pointlist[i]=something;
    }求解
      

  3.   

    用 System.Collections.ObjectModel.ObservableCollection 试试       a.Pointlist.Add(something);
           a.Pointlist[i]=something;都未改变引用本身,因此是不会执行那个set方法的
      

  4.   

    PointList pointlist = new PointList();
    实际上你的这个 pointlist 是一个引用           set
                {
                    pointlist = value;
                    Fun();
                }
    这个是当这个引用发生变化的时候才会执行a.Pointlist.Add(something);
    实际上你并没有改变那个引用,因此不会执行你的set
      

  5.   

    要实现你想要的功能,你应该把 Fun();放到Add方法里调用
      

  6.   

     a.Pointlist.Add(something);//调用get
    等价于:PointList p1=a.Pointlist;
    p1.Add(something); a.Pointlist[i]=something;//调用get
    等价于:PointList p2=a.Pointlist;
    p2[i]=something;