确定TreeNode的Tag类型;标签是各种结构

时间:2014-05-15 14:15:59

标签: c# types struct treeview

我有TreeView TreeNodeTreeNode.Tag种类型TreeNode.Tag

要指定struct我使用数据aTreeNode.Tag = aStruct;实例化StructOne我有三种不同的结构StructTwoStructThree和{{1} }。

因此TreeNode.Tag可以是struct这三种类型之一。我想根据switch类型编写TreeNode.Tag语句。

我不知道如何确定.Tag的类型。我试过这个

if(aTreeNode.Tag is typeof(StructOne))

但我的IDE(MVS)告诉我“Type Expected”。 struct在C#中没有类型吗?

我也认为这可以通过try{]catch{}块实现,但我认为有一个更清洁的解决方案?

编辑:有关更多背景信息,.Tag struct会保存有关其所代表的表单的信息。因此,当用户点击TreeNode时,我需要确定要打开的窗口类型,因此对于每个TreeNode.Tag我会附加一些关于要打开的窗口的数据以及其他一些有关内容的信息。在窗口。但是我有三种不同类型的形式,并且低于其他子类型的形式。

2 个答案:

答案 0 :(得分:1)

如果您不必使用结构并且可以使用类。我建议使用多态方法:

public interface ICanDoStuff
{
    void DoStuff();
}

public class OnOfMyTagClasses : ICanDoStuff
{
    public void DoStuff()
    {
      //Do some stuff
    }
}

((ICanDoStuff)aTreeNode.Tag).DoStuff();

而不是使用switch-case。

答案 1 :(得分:1)

尝试以下方法:

if (aTreeNode.Tag is StructOne)

typeof(SOME_TYPE_NAME)是运行时类型引用(类型为System.Type)。

相关问题