Question

J'ai la herichary de classe comme suit

CEntity ----> Nœuds-C ---> CElement

J'ai

class Nodes : List<Cnode>

et

Class Elements : List<Element>

classe Node contient commune de point commun à différents projets classe Element a spécifique de l'élément à un projet.

I ai à peu profond copier la liste d'éléments dans la liste de noeuds (essentiellement vers le bas de coulée des éléments de noeuds)

Était-ce utile?

La solution

Supposons que vous utilisez .net 3.0 ou plus, le code suivant crée une nouvelle liste avec les mêmes éléments downcasted à RCEOM:

List<CNode> shallowCopyNodesList =  elements.Cast<CNode>().ToList();

Alors (si pas déjà), vous devez créer un constructeur de prendre une List<CNode> en classe et faire des nœuds:

var shallowCopyNodes = new Nodes(shallowCopyNodesList);

Autres conseils

Vous pouvez simplement faire ceci:

List<CNode> nodes = new List<CNode>();
foreach (CElement element in elements) {
  nodes.Add(element);
}

Lorsque des éléments est une liste.

Vous n'avez pas à vous soucier de la coulée de retour à Nœuds-C, parce que hérite de CElement de cela. La chose importante à noter est que les éléments dans la liste des noeuds (dans l'exemple ci-dessus), sont en cas de fait de CElement. Si vous vouliez vous auriez Nœuds-C probablement créer une nouvelle instance de l'aide d'un constructeur Nœuds-C de copie:

public CNode(CNode instance)
{
  this.Property = instance.Property;
}

Et ajouter une nouvelle instance de Nœuds-C:

nodes.Add(new CNode(element));

Vous pouvez utiliser l'opérateur Cast dans LINQ.

var nodelist = elementList.Cast<CNode>()
                   .ToList();

Ce que je l'ai fait est

nodes.addrange(ElementList.ConvertAll(new Converter<Elements, CNode>(ConvertElementsToNode))));

et

public static CNode ConvertElementsToNode(Element ele)
    {
      return ((CNode) ele);
    } // ConvertElementsToNode

mais il y aura une question de performance / mémoire dans cette approche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top