2011-04-28 121 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");} 
}