2012-11-25 58 views
0

在每個頁面背後的代碼中,如何使用反射來獲取我在該頁面上定義的所有webmethods?asp.net codebehind find webmethods

目前我有以下並在Page_Load()中調用它,但它沒有找到我的1靜態函數,我有一個webmethod屬性。

MethodInfo[] methods = this.GetType().GetMethods(); 
foreach (MethodInfo method in methods) 
{ 
    foreach (Attribute attribute in method.GetCustomAttributes(true)) 
    { 
     if (attribute is WebMethodAttribute) 
     { 
     } 
    } 
} 
+0

這什麼也沒有回來的。我確定它與我所看到的對象有關。它看起來並不像靜態方法真的是類或類之後的部分代碼的一部分。 – user441521

回答

1

試試這個公共靜態:

public partial class Default : System.Web.UI.Page 
    { 
     public Default() 
     { 

     } 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      MethodInfo[] methodInfos = typeof(Default).GetMethods(BindingFlags.Public | 
                 BindingFlags.Static); 
      foreach (MethodInfo method in methodInfos) 
      { 
       foreach (Attribute attribute in method.GetCustomAttributes(true)) 
       { 
        if (attribute is WebMethodAttribute) 
        { 
        } 
       } 
      } 

     } 
     [WebMethod] 
     public static void A() 
     { 
     } 
    } 

對我的作品

+1

工作。似乎typeof(默認)是缺少的鏈接。我認爲'這個'會提到那個,但我猜不是。謝謝! – user441521