calling/using给定的属性

calling/using the given attribute

我在 Tag 中没有为 treenode 做任何事情。那么这可能是一个非常简单的问题。我通过互联网搜索,找不到有用的东西。

我正在通过

为树节点分配一些标签
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; }
}

现在我想调用节点使用它的标签。我想访问 NodeName。我试过

var value = node.Tag;

但它给了我预期的两个领域。如果我使用

我会出错
var value = node.Tag.NodeID;

你能帮帮我吗?

var value = node.Tag as NodeTag;
string node_ID = value.NodeID;

标记 属性 具有对象类型,可提供将任何对象存储为节点标记的能力。您必须将存储在 Tag 属性 中的对象转换为所需的类型,尤其是 NodeTag。

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

您可以添加一些扩展方法使其reader友好

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

现在可以使用了

var id = node.GetNodeID();