日期:2014-05-17 浏览次数:20916 次
 public class Team 
{
  public virtual Team Clone2()
        {
            Team c = new Team();
            c.Time = this.Time;  
            c.RaceName =this.RaceName;
             c.Name = this.Name;
            c.RightName = this.RightName;
            c.Score = this.Score;
            c.VSName= this.VSName;
            return c;
            
        }
}
   public class ChildrenTeam 
{
  public override ChildrenTeam  Clone2()
        {
            ChildrenTeam c = new ChildrenTeam();
            c.Time = this.Time;  
            c.RaceName =this.RaceName;
             c.Name = this.Name;
            c.RightName = this.RightName;
            c.Score = this.Score;
            c.VSName= this.VSName;
//基类特有的变量
c.ID=this.ID;
            return c;
                       
        }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    class Team
    {
        public string TeamField { get; set; }
        protected virtual void OnClone(Team t)
        {
            t.TeamField = TeamField;
        }
        public Team Clone2()
        {
            Team t = new Team();
            OnClone(t);
            return t;
        }
    }
    class ChildTeam : Team
    {
        public string ChildTeamField { get; set; }
        protected override void OnClone(Team t)
        {
            base.OnClone(t);
            (t as ChildTeam).ChildTeamField = ChildTeamField;
        }
        public ChildTeam Clone2()
        {
            Team t = new ChildTeam();
            OnClone(t);
            return t as ChildTeam;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            ChildTeam tc = new ChildTeam() { ChildTeamField = "b", TeamField = "a" };
            ChildTeam tc2 = tc.Clone2();
            Console.WriteLine(tc2 == tc);
            Console.WriteLine(tc2.TeamField + "," + tc2.ChildTeamField);
        }
    }
}
------解决方案--------------------