RpcMethodInfo.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using EdjCase.JsonRpc.Core.Utilities;
  2. using EdjCase.JsonRpc.Router.Utilities;
  3. using Newtonsoft.Json.Linq;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Reflection;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace EdjCase.JsonRpc.Router
  11. {
  12. public class RpcMethodInfo
  13. {
  14. public MethodInfo Method { get; }
  15. public object[] ConvertedParameters { get; }
  16. public object[] RawParameters { get; }
  17. public RpcMethodInfo(MethodInfo method, object[] convertedParameters, object[] rawParameters)
  18. {
  19. this.Method = method;
  20. this.ConvertedParameters = convertedParameters;
  21. this.RawParameters = rawParameters;
  22. }
  23. public bool HasExactParameterMatch()
  24. {
  25. try
  26. {
  27. ParameterInfo[] parameters = this.Method.GetParameters();
  28. for (int i = 0; i < this.RawParameters.Length; i++)
  29. {
  30. object original = this.RawParameters[i];
  31. ParameterInfo parameter = parameters[i];
  32. if (!RpcUtil.TypesMatch(original, parameter.ParameterType))
  33. {
  34. return false;
  35. }
  36. }
  37. return true;
  38. }
  39. catch
  40. {
  41. return false;
  42. }
  43. }
  44. }
  45. }