2011-04-28 165 views

回答

4

这完全适用于我

class Test 
    { 
     public delegate void MyHandler(string x); 

     public void RunTest() 
     { 
      var del = new MyHandler(Method); 
      if (del is Delegate) 
      { 
       Console.WriteLine(@"del is a delegate."); 
      } 
      else 
      { 
       Console.WriteLine("del is not a delegate"); 
      } 

     } 

     private void Method(string myString) 
     { 
     } 
    } 
23

当然,同任何其他类型的:

if (foo is Delegate) 

或者某个类型:

if (typeof(Delegate).IsAssignableFrom(t)) 
2

你可以只检查是否obj is Delegate
所有委托类型都继承基类Delegate类。

1

是。检查该类型是否继承自System.Delegate。下面是一个工作示例,其中包含一些简单的测试,以确保我们有适当的代表对象:

using System; 

public class MyClass 
{ 
    delegate void DelegateType(); 
    public static void Main() 
    { 
     DelegateType obj = method; 
     obj.Method.Invoke(null, null); 

     if (obj is System.Delegate) 
      Console.WriteLine("Type is a delegate"); 
     else   
      Console.WriteLine("Type is NOT a delegate"); 
    } 

    private static void method() {Console.WriteLine("Invoked");} 
} 
相关问题