私は汎用型のuserControlを持っています.T型(Tはクラスです)では、ツリー内にTを実装するすべての型を持つツリーを作成しますリフレクション付き)。 ツリーは正常に動作しますが、タイプが選択されたことを通知するイベントを実装しようとしたとき、InvalidCastExceptionを取得したか、自分の機能が機能しなくなってしまいました。C#でジェネリックのオブジェクトをキャスト - InvalidCast例外
関数である。したがって、このようにして、e.Node.TagはTであるe.Node.Tag
で
void TypeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if ((typeSelected != null) && (e.Node.Tag is T))
typeSelected((T)e.Node.Tag)
}
タイプT
typeSelected
本当にあるオブジェクトがあるタイプAction<T>
のものです実行時にはfalseですが、時計を設定すると、 もtrueになります。例外の取得を取り除くと、(T)e.Node.Tag
から例外が発生しますが、時計はキャストに成功します。ランタイムで
タイプはRuntimeType
です....
そうですが、なぜでしょう、そしてどのように私はそれを解決できますか?
になるはずですしてください:(1)コードこと(2)正確なエラーメッセージ –
各ノードのTagプロパティに値を割り当てるコードを提供する必要があると思います。 –