我有一个通用的用户控件我做了,给定一个类型T(其中T是一个类),创建一个树所有的树(显然找到他们实行T中的类型与反射)。 树工作正常,但当我试图实现一个事件,告诉我一个类型被选中,我得到一个InvalidCastException,或者我的函数不起作用,无论我做什么。铸造对象 - InvalidCast异常
的功能是:
void TypeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if ((typeSelected != null) && (e.Node.Tag is T))
typeSelected((T)e.Node.Tag)
}
在e.Node.Tag
有一个对象,它是真的类型T
typeSelected
是类型Action<T>
所以以这种方式的,e.Node.Tag是T是在运行时为false,但如果我在上设置了手表,那么也是如此,如果我从(T)e.Node.Tag
中删除了条件为Im的异常,但手表仍能成功投射它。
在运行时类型为RuntimeType
....
那么,为什么会出现这种情况,而且我怎么能解决呢?
请提供:(1)代码(2)确切的错误消息 –
我认为您需要提供代码将值分配给每个节点的Tag属性的代码。 –