using Apewer.Network; using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Text; namespace Apewer.Web { /// API 上下文。 public sealed class ApiContext { #region 构造参数 private ApiInvoker _invoker = null; private ApiProvider _provider = null; private ApiEntries _entries = null; private DateTime _beginning = DateTime.Now; private ApiOptions _options = null; /// 此上下文启动的时间。 public DateTime Beginning { get => _beginning; } /// API 调用器。 public ApiInvoker Invoker { get => _invoker; } /// API 提供程序。 public ApiProvider Provider { get => _provider; } /// API 入口集。 public ApiEntries Entries { get => _entries; } /// API 选项。 public ApiOptions Options { get => _options; } #endregion #region 执行过程中产生的内容 /// API 行为。 public ApiAction ApiAction { get; internal set; } /// API 请求。 public ApiRequest Request { get; internal set; } /// API 响应。 public ApiResponse Response { get; internal set; } /// API 控制器实例。 public ApiController Controller { get; internal set; } /// 执行的方法。 public MethodInfo MethodInfo { get; internal set; } #endregion internal ApiContext(ApiInvoker invoker, ApiProvider provider, ApiEntries entries) { if (invoker == null) throw new ArgumentNullException(nameof(invoker)); if (provider == null) throw new ArgumentNullException(nameof(provider)); if (entries == null) throw new ArgumentNullException(nameof(entries)); _invoker = invoker; _provider = provider; _entries = entries; _options = invoker.Options ?? new ApiOptions(); } } }