日期:2014-05-17 浏览次数:20912 次
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);
}
}
}
------解决方案--------------------