2016-04-11 1 views
0

Je n'ai rien fait dans Tag pour treenode. Alors c'est peut-être une question très simple. J'ai cherché sur internet et je n'ai pas trouvé quelque chose d'utile.appelant/utilisant l'attribut donné

Je donne des tags pour attribuer des nœuds d'arbres via

public class NodeTag 
{ 
    public NodeTag(string name, string ID)//, bool component, string script, bool child) //,ref parrent 
    { 
     NodeName = name; 
     NodeID = ID; 
    } 
    public string NodeName { get; set; } 
    public string NodeID { get; set; } 
} 

Maintenant, je voudrais appeler noeuds utilisant la balise. Je veux accéder au NodeName. J'ai essayé comme

var value = node.Tag; 

Mais il me donne les deux champs comme on devrait s'y attendre. J'ai une erreur si j'utilise

var value = node.Tag.NodeID; 

Pourriez-vous m'aider s'il vous plaît?

+0

Quel est le message d'erreur? –

Répondre

0

Une propriété de balise possède le type d'objet permettant de stocker tout objet en tant que balise de noeud. Vous devez convertir un objet stocké dans une propriété Tag en le type requis, en particulier dans le NodeTag.

var id = ((NodeTag)node.Tag).NodeID 

Vous pouvez ajouter quelques méthodes d'extension pour le rendre facile à lire

public static int GetNodeID(this Node node) 
{ 
    return ((NodeTag)node?.Tag).NodeID; 
} 

Maintenant, vous pouvez l'utiliser

var id = node.GetNodeID(); 
0
var value = node.Tag as NodeTag; 
string node_ID = value.NodeID;