C#中的交叉引用变通方法

时间:2018-02-21 21:48:12

标签: c# design-patterns cross-reference

我有两个类,他们有其他类型的字段。现在我想继承这些类并行并使用一些魔法,这样派生类可以具有相同的字段,但在继承之后相互之间具有相对类型。

class Leader {
   public Follower slave;
}

class Follower {
   public Leader master;
}

class Teacher : Leader {}
class Student : Follower {}

class Officer : Leader {}
class Soldier : Follower {}

Teacher.slave.GetType(); // Returns Student
Officer.slave.GetType(); // Returns Soldier

Student.master.GetType(); // Returns Teacher
Soldier.master.GetType(); // Returns Officer

是否有一种模式或任何解决方案可以在C#中实现这一点?

1 个答案:

答案 0 :(得分:0)

你可以使用泛型:

class Leader<TFollower> 
{
    public TFollower Slave;
}

class Follower<TLeader>
{
    public TLeader Master; 
}

class Teacher : Leader<Student>
{
}

class Student : Follower<Teacher>
{
}

class Officer : Leader<Soldier>
{
}

class Soldier : Follower<Officer>
{
}