Classi di refactoring con riferimento a se stessi

0

Come posso refactoring questo codice?

class Node
{
   public Node Parent { get; set; }
}

class AVLNode
{
   public AVLNode Parent { get; set; }
}

Ho provato ad usare l'ereditarietà, ma poi devo usare cast di tipo:

class AVLNode : Node
{
}

class Program
{
   void Main()
   {
      AVLNode a = new AVLNode();
      AVLNode b = a.Parent **as AVLNode**;
   }
}
    
posta mif 20.06.2013 - 01:44
fonte

1 risposta

7

Prova a creare un'interfaccia generica (INode < out T >). Il codice cambierà in qualcosa del genere:

interface INode<out T>
{
  T Parent { get; set; }
}

class Node : INode<Node>
{
  public Node Parent { get; set; }
}

class AVLNode : INode<AVLNode>
{
  public AVLNode Parent { get; set; }
}

Il tuo codice chiamante è semplicemente:

AVLNode a = new AVLNode();
AVLNode b = a.Parent;
    
risposta data 20.06.2013 - 01:54
fonte

Leggi altre domande sui tag