none
is 判断带范型的类 RRS feed

  • 问题

  • if (obj is EventHandler<TEventArgs>) //直接这么写编译不过。 我想判断obj 是否是 EventHandler<TEventArgs>类型。
    
                                // if (obj is EventHandler) 永远返回 false ,类型判断不对
    
    
    2011年2月7日 16:19

答案

  • if (( obj is EventHandler
      || obj.GetType().FullName.StartsWith( Type.GetType("System.EventHandler`1").FullName ) )
    
    //终于解决了. 真TNND复杂啊!
    
    2011年2月8日 3:36

全部回复

  • obj.GetType() == typeof (EventHandler<TEventArgs>) 也不行。。。
    2011年2月7日 16:22
  • if (( obj is EventHandler
      || obj.GetType().FullName.StartsWith( Type.GetType("System.EventHandler`1").FullName ) )
    
    //终于解决了. 真TNND复杂啊!
    
    2011年2月8日 3:36
  • 您好,Charles Shao:

    感谢您分享您的解决方案!

    如果您有任何关于C#的问题,请随时向我们提出!


    Neddy Ren [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年2月18日 1:56
  • 您好,可以不用这么复杂的。

    要使用泛型,先需要对泛型参数做定义。有两种方式:在类定义和在方法中。我写个在方法中的供参考:

    public void test<TEventArgs>() where TEventArgs : EventArgs
    {
      object obj=null;
      if (obj is EventHandler<TEventArgs>)
        { }
    }
    

    2011年2月18日 3:47
    版主