ClientMethod.cs
上传用户:szgaoree
上传日期:2009-01-05
资源大小:74k
文件大小:2k
源码类别:

Ajax

开发平台:

C#

  1. using System;
  2. using System.Reflection;
  3. namespace AjaxPro
  4. {
  5. public delegate object[] GetDataHandler(string input, int count);
  6. public class ClientMethod
  7. {
  8. /// <summary>
  9. /// Returns a ClientMethod instance to get the name of the class and method name on the client-side JavaScript.
  10. /// </summary>
  11. /// <param name="method">The MethodInfo.</param>
  12. /// <returns>Returns the ClientMethod info, if it is not a AjaxMethod it will return null.</returns>
  13. public static ClientMethod FromMethodInfo(MethodInfo method)
  14. {
  15. if(method.GetCustomAttributes(typeof(AjaxPro.AjaxMethodAttribute), true).Length == 0)
  16. return null;
  17. AjaxPro.AjaxNamespaceAttribute[] classns = (AjaxPro.AjaxNamespaceAttribute[])method.ReflectedType.GetCustomAttributes(typeof(AjaxPro.AjaxNamespaceAttribute), true);
  18. AjaxPro.AjaxNamespaceAttribute[] methodns = (AjaxPro.AjaxNamespaceAttribute[])method.GetCustomAttributes(typeof(AjaxPro.AjaxNamespaceAttribute), true);
  19. ClientMethod cm = new ClientMethod();
  20. if(classns.Length > 0)
  21. cm.ClassName = classns[0].ClientNamespace;
  22. else
  23. cm.ClassName = method.ReflectedType.FullName;
  24. if(methodns.Length > 0)
  25. cm.MethodName += methodns[0].ClientNamespace;
  26. else
  27. cm.MethodName += method.Name;
  28. return cm;
  29. }
  30. /// <summary>
  31. /// Returns a ClientMethod instance to get the name of the class and method name on the client-side JavaScript.
  32. /// </summary>
  33. /// <param name="d">The Delegate.</param>
  34. /// <returns>Returns the ClientMethod info, if it is not a AjaxMethod it will return null.</returns>
  35. public static ClientMethod FromDelegate(Delegate d)
  36. {
  37. if(d == null)
  38. return null;
  39. return ClientMethod.FromMethodInfo(d.Method);
  40. }
  41. /// <summary>
  42. /// The name of the class used on the client-side JavaScript.
  43. /// </summary>
  44. public string ClassName;
  45. /// <summary>
  46. /// The name of the method used on the client-side JavaScript on the class ClassName.
  47. /// </summary>
  48. public string MethodName;
  49. }
  50. }