You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.4 KiB

3 years ago
11 months ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
11 months ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
11 months ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
  1. using Apewer.Network;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Diagnostics;
  5. using System.Reflection;
  6. using System.Text;
  7. namespace Apewer.Web
  8. {
  9. /// <summary>API 上下文。</summary>
  10. public sealed class ApiContext
  11. {
  12. #region 构造参数
  13. private ApiInvoker _invoker = null;
  14. private ApiProvider _provider = null;
  15. private ApiEntries _entries = null;
  16. private DateTime _beginning = DateTime.Now;
  17. private ApiOptions _options = null;
  18. /// <summary>此上下文启动的时间。</summary>
  19. public DateTime Beginning { get => _beginning; }
  20. /// <summary>API 调用器。</summary>
  21. public ApiInvoker Invoker { get => _invoker; }
  22. /// <summary>API 提供程序。</summary>
  23. public ApiProvider Provider { get => _provider; }
  24. /// <summary>API 入口集。</summary>
  25. public ApiEntries Entries { get => _entries; }
  26. /// <summary>API 选项。</summary>
  27. public ApiOptions Options { get => _options; }
  28. #endregion
  29. #region 执行过程中产生的内容
  30. /// <summary>API 行为。</summary>
  31. public ApiAction ApiAction { get; internal set; }
  32. /// <summary>API 请求。</summary>
  33. public ApiRequest Request { get; internal set; }
  34. /// <summary>API 响应。</summary>
  35. public ApiResponse Response { get; internal set; }
  36. /// <summary>API 控制器实例。</summary>
  37. public ApiController Controller { get; internal set; }
  38. /// <summary>执行的方法。</summary>
  39. public MethodInfo MethodInfo { get; internal set; }
  40. #endregion
  41. internal ApiContext(ApiInvoker invoker, ApiProvider provider, ApiEntries entries)
  42. {
  43. if (invoker == null) throw new ArgumentNullException(nameof(invoker));
  44. if (provider == null) throw new ArgumentNullException(nameof(provider));
  45. if (entries == null) throw new ArgumentNullException(nameof(entries));
  46. _invoker = invoker;
  47. _provider = provider;
  48. _entries = entries;
  49. _options = invoker.Options ?? new ApiOptions();
  50. }
  51. /// <summary>自定义数据。若此自定义数据实现了 <see cref="IDisposable" />,将会与 Context 一起自动释放。</summary>
  52. public object Data { get; set; }
  53. }
  54. }