ExpressionDescriptor.Core.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. using System.Reflection;
  3. namespace FastReport.Code
  4. {
  5. internal class ExpressionDescriptor
  6. {
  7. private string methodName;
  8. private MethodInfo methodInfo;
  9. private readonly AssemblyDescriptor assembly;
  10. public string MethodName
  11. {
  12. get { return methodName; }
  13. set { methodName = value; }
  14. }
  15. #pragma warning disable 618
  16. public object Invoke(object[] parameters)
  17. {
  18. if (assembly == null || assembly.Instance == null)
  19. return null;
  20. if (methodInfo == null)
  21. {
  22. methodInfo = assembly.Instance.GetType().GetMethod(MethodName,
  23. BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
  24. }
  25. if (methodInfo == null)
  26. return null;
  27. return methodInfo.Invoke(assembly.Instance, parameters);
  28. }
  29. #pragma warning restore 618
  30. public ExpressionDescriptor(AssemblyDescriptor assembly)
  31. {
  32. this.assembly = assembly;
  33. }
  34. }
  35. }