代码如下: 红色的注释有问题,能给解答么?
   private void button1_Click(object sender, EventArgs e)
        {            Test t = new Test();            t.PID = "SSSS";            ITest i = t;            i.Pro.ID = "AAAAA";//为什么这里的"AAAAA"没有赋值,跑哪里去了?
            MessageBox.Show(i.Pro.ID);
        }        public class Property 
    {
        public string ID { get; set; }        public string Name { get; set; }
    }    public interface ITest 
    {
        Property Pro { get; set; }
    }    public class Test : ITest
    {        public string PID { get; set; }
        public string PName { get; set; }
        #region ITest 成员        Property p = new Property();        Property ITest.Pro
        {
            get
            {
                p.ID = this.PID;
                p.Name = this.PName;                return p;
            }
            set
            {
                p = value;
                this.PID = p.ID;
                this.PName = p.Name;
            }
        }        #endregion
    }

解决方案 »

  1.   

                Property ITest.Pro
                {
                    get
                    {
                        p.ID = this.PID;
                        p.Name = this.PName;                    return p;
                    }
                    set
                    {
                        p = value;
                        this.PID = p.ID;
                        this.PName = p.Name;
                    }
                }你这属性写的,就是这个意思吧,你的测试程序里,只对该属性进行了取值,并没有进行赋值
      

  2.   

    有人知道么?
    我暂时想到个方法,就是new一个Propery的实例
    Property pTemp = new Propery();
    pTemp.ID = "AAAAA";
    i.Pro = pTemp;如此i.Pro.ID 才能接受"AAAAA";难道非得如此么? 那我的程序就得改成花了.求大神帮忙.
      

  3.   


    您指的属性是哪个? 我对Pro的属性取值,是在Get里面,想把Test类中的PID属性和PName属性组合,变为Pro的值.
    当Pro类被赋值时候,想对Test类中的PID和PName赋值.不知道这么写有什么问题?
      

  4.   

    i.Pro.ID = "AAAAA";//为什么这里的"AAAAA"没有赋值,跑哪里去了?//赋值成功System.Diagnostics.Trace.Write(i.Pro.ID);//此时,进入代码段get
                    {
                        p.ID = this.PID;//重新赋值sss所以你得不到想要的值