平安校园
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

517 строки
23 KiB

  1. <?xml version="1.0"?>
  2. <doc>
  3. <assembly>
  4. <name>SafeCampus.Cache</name>
  5. </assembly>
  6. <members>
  7. <member name="T:SafeCampus.Cache.CacheConst">
  8. <summary>
  9. Redis常量
  10. </summary>
  11. </member>
  12. <member name="F:SafeCampus.Cache.CacheConst.CACHE_PREFIX_WEB">
  13. <summary>
  14. Redis Key前缀(可删除)
  15. </summary>
  16. </member>
  17. <member name="F:SafeCampus.Cache.CacheConst.CACHE_PREFIX">
  18. <summary>
  19. Redis Key前缀(需要持久化,不随系统重启删除)
  20. </summary>
  21. </member>
  22. <member name="F:SafeCampus.Cache.CacheConst.CACHE_HASH">
  23. <summary>
  24. Redis Hash类型
  25. </summary>
  26. </member>
  27. <member name="F:SafeCampus.Cache.CacheConst.CACHE_USER_TOKEN">
  28. <summary>
  29. 用户Token缓存Key
  30. </summary>
  31. </member>
  32. <member name="T:SafeCampus.Cache.ISimpleCacheService">
  33. <summary>
  34. 缓存服务
  35. </summary>
  36. <summary>
  37. 缓存服务
  38. </summary>
  39. </member>
  40. <member name="M:SafeCampus.Cache.ISimpleCacheService.HashAdd``1(System.String,System.String,``0)">
  41. <summary>
  42. 添加一条数据到HashMap
  43. </summary>
  44. <typeparam name="T"></typeparam>
  45. <param name="key">键</param>
  46. <param name="hashKey">hash列表里的Key</param>
  47. <param name="value">值</param>
  48. </member>
  49. <member name="M:SafeCampus.Cache.ISimpleCacheService.HashSet``1(System.String,System.Collections.Generic.Dictionary{System.String,``0})">
  50. <summary>
  51. 添加多条数据到HashMap
  52. </summary>
  53. <typeparam name="T"></typeparam>
  54. <param name="key">键</param>
  55. <param name="dic">键值对字典</param>
  56. <returns></returns>
  57. </member>
  58. <member name="M:SafeCampus.Cache.ISimpleCacheService.HashDel``1(System.String,System.String[])">
  59. <summary>
  60. 从HashMap中删除数据
  61. </summary>
  62. <typeparam name="T"></typeparam>
  63. <param name="key">键</param>
  64. <param name="fields">hash键列表</param>
  65. <returns>执行结果</returns>
  66. </member>
  67. <member name="M:SafeCampus.Cache.ISimpleCacheService.HashGet``1(System.String,System.String[])">
  68. <summary>
  69. 根据键获取hash列表中的值
  70. </summary>
  71. <typeparam name="T"></typeparam>
  72. <param name="key">键</param>
  73. <param name="fields">hash键列表</param>
  74. <returns>数据列表</returns>
  75. </member>
  76. <member name="M:SafeCampus.Cache.ISimpleCacheService.HashGetOne``1(System.String,System.String)">
  77. <summary>
  78. 根据键获取hash列表中的值
  79. </summary>
  80. <typeparam name="T"></typeparam>
  81. <param name="key">键</param>
  82. <param name="field">hash键</param>
  83. <returns></returns>
  84. </member>
  85. <member name="M:SafeCampus.Cache.ISimpleCacheService.HashGetAll``1(System.String)">
  86. <summary>
  87. 获取所有键值对
  88. </summary>
  89. <typeparam name="T"></typeparam>
  90. <param name="key">键</param>
  91. <returns>数据字典</returns>
  92. </member>
  93. <member name="M:SafeCampus.Cache.ISimpleCacheService.ContainsKey(System.String)">
  94. <summary>是否包含缓存项</summary>
  95. <param name="key"></param>
  96. <returns></returns>
  97. </member>
  98. <member name="M:SafeCampus.Cache.ISimpleCacheService.Set``1(System.String,``0,System.Int32)">
  99. <summary>设置缓存项</summary>
  100. <param name="key">键</param>
  101. <param name="value">值</param>
  102. <param name="expire">过期时间,秒。小于0时采用默认缓存时间</param>
  103. <returns></returns>
  104. </member>
  105. <member name="M:SafeCampus.Cache.ISimpleCacheService.Set``1(System.String,``0,System.TimeSpan)">
  106. <summary>设置缓存项</summary>
  107. <param name="key">键</param>
  108. <param name="value">值</param>
  109. <param name="expire">过期时间</param>
  110. <returns></returns>
  111. </member>
  112. <member name="M:SafeCampus.Cache.ISimpleCacheService.Get``1(System.String)">
  113. <summary>获取缓存项</summary>
  114. <param name="key">键</param>
  115. <returns></returns>
  116. </member>
  117. <member name="M:SafeCampus.Cache.ISimpleCacheService.Remove(System.String[])">
  118. <summary>批量移除缓存项</summary>
  119. <param name="keys">键集合</param>
  120. <returns></returns>
  121. </member>
  122. <member name="M:SafeCampus.Cache.ISimpleCacheService.Clear">
  123. <summary>清空所有缓存项</summary>
  124. </member>
  125. <member name="M:SafeCampus.Cache.ISimpleCacheService.SetExpire(System.String,System.TimeSpan)">
  126. <summary>设置缓存项有效期</summary>
  127. <param name="key">键</param>
  128. <param name="expire">过期时间</param>
  129. </member>
  130. <member name="M:SafeCampus.Cache.ISimpleCacheService.GetExpire(System.String)">
  131. <summary>获取缓存项有效期</summary>
  132. <param name="key">键</param>
  133. <returns></returns>
  134. </member>
  135. <member name="M:SafeCampus.Cache.ISimpleCacheService.DelByPattern(System.String)">
  136. <summary>
  137. 模糊删除
  138. </summary>
  139. <param name="pattern">匹配关键字</param>
  140. </member>
  141. <member name="M:SafeCampus.Cache.ISimpleCacheService.GetAll``1(System.Collections.Generic.IEnumerable{System.String})">
  142. <summary>批量获取缓存项</summary>
  143. <typeparam name="T"></typeparam>
  144. <param name="keys"></param>
  145. <returns></returns>
  146. </member>
  147. <member name="M:SafeCampus.Cache.ISimpleCacheService.SetAll``1(System.Collections.Generic.IDictionary{System.String,``0},System.Int32)">
  148. <summary>批量设置缓存项</summary>
  149. <typeparam name="T"></typeparam>
  150. <param name="values"></param>
  151. <param name="expire">过期时间,秒。小于0时采用默认缓存时间</param>
  152. </member>
  153. <member name="M:SafeCampus.Cache.ISimpleCacheService.GetList``1(System.String)">
  154. <summary>获取列表</summary>
  155. <typeparam name="T">元素类型</typeparam>
  156. <param name="key">键</param>
  157. <returns></returns>
  158. </member>
  159. <member name="M:SafeCampus.Cache.ISimpleCacheService.GetDictionary``1(System.String)">
  160. <summary>获取哈希</summary>
  161. <typeparam name="T">元素类型</typeparam>
  162. <param name="key">键</param>
  163. <returns></returns>
  164. </member>
  165. <member name="M:SafeCampus.Cache.ISimpleCacheService.GetQueue``1(System.String)">
  166. <summary>获取队列</summary>
  167. <typeparam name="T">元素类型</typeparam>
  168. <param name="key">键</param>
  169. <returns></returns>
  170. </member>
  171. <member name="M:SafeCampus.Cache.ISimpleCacheService.GetStack``1(System.String)">
  172. <summary>获取栈</summary>
  173. <typeparam name="T">元素类型</typeparam>
  174. <param name="key">键</param>
  175. <returns></returns>
  176. </member>
  177. <member name="M:SafeCampus.Cache.ISimpleCacheService.GetSet``1(System.String)">
  178. <summary>获取Set</summary>
  179. <typeparam name="T"></typeparam>
  180. <param name="key"></param>
  181. <returns></returns>
  182. </member>
  183. <member name="M:SafeCampus.Cache.ISimpleCacheService.Add``1(System.String,``0,System.Int32)">
  184. <summary>添加,已存在时不更新</summary>
  185. <typeparam name="T">值类型</typeparam>
  186. <param name="key">键</param>
  187. <param name="value">值</param>
  188. <param name="expire">过期时间,秒。小于0时采用默认缓存时间</param>
  189. <returns></returns>
  190. </member>
  191. <member name="M:SafeCampus.Cache.ISimpleCacheService.Replace``1(System.String,``0)">
  192. <summary>设置新值并获取旧值,原子操作</summary>
  193. <remarks>
  194. 常常配合Increment使用,用于累加到一定数后重置归零,又避免多线程冲突。
  195. </remarks>
  196. <typeparam name="T">值类型</typeparam>
  197. <param name="key">键</param>
  198. <param name="value">值</param>
  199. <returns></returns>
  200. </member>
  201. <member name="M:SafeCampus.Cache.ISimpleCacheService.TryGetValue``1(System.String,``0@)">
  202. <summary>尝试获取指定键,返回是否包含值。有可能缓存项刚好是默认值,或者只是反序列化失败,解决缓存穿透问题</summary>
  203. <typeparam name="T">值类型</typeparam>
  204. <param name="key">键</param>
  205. <param name="value">值。即使有值也不一定能够返回,可能缓存项刚好是默认值,或者只是反序列化失败</param>
  206. <returns>返回是否包含值,即使反序列化失败</returns>
  207. </member>
  208. <member name="M:SafeCampus.Cache.ISimpleCacheService.Increment(System.String,System.Int64)">
  209. <summary>累加,原子操作</summary>
  210. <param name="key">键</param>
  211. <param name="value">变化量</param>
  212. <returns></returns>
  213. </member>
  214. <member name="M:SafeCampus.Cache.ISimpleCacheService.Increment(System.String,System.Double)">
  215. <summary>累加,原子操作</summary>
  216. <param name="key">键</param>
  217. <param name="value">变化量</param>
  218. <returns></returns>
  219. </member>
  220. <member name="M:SafeCampus.Cache.ISimpleCacheService.Decrement(System.String,System.Int64)">
  221. <summary>递减,原子操作</summary>
  222. <param name="key">键</param>
  223. <param name="value">变化量</param>
  224. <returns></returns>
  225. </member>
  226. <member name="M:SafeCampus.Cache.ISimpleCacheService.Decrement(System.String,System.Double)">
  227. <summary>递减,原子操作</summary>
  228. <param name="key">键</param>
  229. <param name="value">变化量</param>
  230. <returns></returns>
  231. </member>
  232. <member name="M:SafeCampus.Cache.ISimpleCacheService.Commit">
  233. <summary>提交变更。部分提供者需要刷盘</summary>
  234. <returns></returns>
  235. </member>
  236. <member name="M:SafeCampus.Cache.ISimpleCacheService.AcquireLock(System.String,System.Int32)">
  237. <summary>申请分布式锁</summary>
  238. <param name="key">要锁定的key</param>
  239. <param name="msTimeout">锁等待时间,单位毫秒</param>
  240. <returns></returns>
  241. </member>
  242. <member name="M:SafeCampus.Cache.ISimpleCacheService.AcquireLock(System.String,System.Int32,System.Int32,System.Boolean)">
  243. <summary>申请分布式锁</summary>
  244. <param name="key">要锁定的key</param>
  245. <param name="msTimeout">锁等待时间,申请加锁时如果遇到冲突则等待的最大时间,单位毫秒</param>
  246. <param name="msExpire">锁过期时间,超过该时间如果没有主动释放则自动释放锁,必须整数秒,单位毫秒</param>
  247. <param name="throwOnFailure">失败时是否抛出异常,如果不抛出异常,可通过返回null得知申请锁失败</param>
  248. <returns></returns>
  249. </member>
  250. <member name="T:SafeCampus.Cache.CacheSettingsOptions">
  251. <summary>
  252. 缓存设置
  253. </summary>
  254. </member>
  255. <member name="P:SafeCampus.Cache.CacheSettingsOptions.UseRedis">
  256. <summary>
  257. 使用Redis
  258. </summary>
  259. </member>
  260. <member name="P:SafeCampus.Cache.CacheSettingsOptions.RedisSettings">
  261. <summary>
  262. Redis设置
  263. </summary>
  264. </member>
  265. <member name="T:SafeCampus.Cache.RedisSettings">
  266. <summary>
  267. Redis设置
  268. </summary>
  269. </member>
  270. <member name="P:SafeCampus.Cache.RedisSettings.Address">
  271. <summary>
  272. 连接地址
  273. </summary>
  274. </member>
  275. <member name="P:SafeCampus.Cache.RedisSettings.Password">
  276. <summary>
  277. 密码
  278. </summary>
  279. </member>
  280. <member name="P:SafeCampus.Cache.RedisSettings.Db">
  281. <summary>
  282. 数据库
  283. </summary>
  284. </member>
  285. <member name="P:SafeCampus.Cache.RedisSettings.ClearRedis">
  286. <summary>
  287. 是否每次启动都清空
  288. </summary>
  289. </member>
  290. <member name="T:SafeCampus.Cache.MemoryCacheService">
  291. <summary>
  292. <inheritdoc cref="T:SafeCampus.Cache.ISimpleCacheService"/>
  293. 内存缓存
  294. </summary>
  295. <summary>
  296. <inheritdoc cref="T:SafeCampus.Cache.ISimpleCacheService"/>
  297. 内存缓存
  298. </summary>
  299. </member>
  300. <member name="M:SafeCampus.Cache.MemoryCacheService.HashAdd``1(System.String,System.String,``0)">
  301. <inheritdoc/>
  302. </member>
  303. <member name="M:SafeCampus.Cache.MemoryCacheService.HashSet``1(System.String,System.Collections.Generic.Dictionary{System.String,``0})">
  304. <inheritdoc/>
  305. </member>
  306. <member name="M:SafeCampus.Cache.MemoryCacheService.HashDel``1(System.String,System.String[])">
  307. <inheritdoc/>
  308. </member>
  309. <member name="M:SafeCampus.Cache.MemoryCacheService.HashGet``1(System.String,System.String[])">
  310. <inheritdoc/>
  311. </member>
  312. <member name="M:SafeCampus.Cache.MemoryCacheService.HashGetOne``1(System.String,System.String)">
  313. <inheritdoc/>
  314. </member>
  315. <member name="M:SafeCampus.Cache.MemoryCacheService.HashGetAll``1(System.String)">
  316. <inheritdoc/>
  317. </member>
  318. <member name="M:SafeCampus.Cache.MemoryCacheService.Get``1(System.String)">
  319. <inheritdoc/>
  320. </member>
  321. <member name="M:SafeCampus.Cache.MemoryCacheService.Remove(System.String[])">
  322. <inheritdoc/>
  323. </member>
  324. <member name="M:SafeCampus.Cache.MemoryCacheService.Set``1(System.String,``0,System.Int32)">
  325. <inheritdoc/>
  326. </member>
  327. <member name="M:SafeCampus.Cache.MemoryCacheService.Set``1(System.String,``0,System.TimeSpan)">
  328. <inheritdoc/>
  329. </member>
  330. <member name="M:SafeCampus.Cache.MemoryCacheService.SetExpire(System.String,System.TimeSpan)">
  331. <inheritdoc/>
  332. </member>
  333. <member name="M:SafeCampus.Cache.MemoryCacheService.GetExpire(System.String)">
  334. <inheritdoc/>
  335. </member>
  336. <member name="M:SafeCampus.Cache.MemoryCacheService.ContainsKey(System.String)">
  337. <inheritdoc/>
  338. </member>
  339. <member name="M:SafeCampus.Cache.MemoryCacheService.Clear">
  340. <inheritdoc/>
  341. </member>
  342. <member name="M:SafeCampus.Cache.MemoryCacheService.DelByPattern(System.String)">
  343. <inheritdoc/>
  344. </member>
  345. <member name="M:SafeCampus.Cache.MemoryCacheService.GetAll``1(System.Collections.Generic.IEnumerable{System.String})">
  346. <inheritdoc/>
  347. </member>
  348. <member name="M:SafeCampus.Cache.MemoryCacheService.SetAll``1(System.Collections.Generic.IDictionary{System.String,``0},System.Int32)">
  349. <inheritdoc/>
  350. </member>
  351. <member name="M:SafeCampus.Cache.MemoryCacheService.GetDictionary``1(System.String)">
  352. <inheritdoc/>
  353. </member>
  354. <member name="M:SafeCampus.Cache.MemoryCacheService.GetQueue``1(System.String)">
  355. <inheritdoc/>
  356. </member>
  357. <member name="M:SafeCampus.Cache.MemoryCacheService.GetStack``1(System.String)">
  358. <inheritdoc/>
  359. </member>
  360. <member name="M:SafeCampus.Cache.MemoryCacheService.GetSet``1(System.String)">
  361. <inheritdoc/>
  362. </member>
  363. <member name="M:SafeCampus.Cache.MemoryCacheService.Add``1(System.String,``0,System.Int32)">
  364. <inheritdoc/>
  365. </member>
  366. <member name="M:SafeCampus.Cache.MemoryCacheService.GetList``1(System.String)">
  367. <inheritdoc/>
  368. </member>
  369. <member name="M:SafeCampus.Cache.MemoryCacheService.Replace``1(System.String,``0)">
  370. <inheritdoc/>
  371. </member>
  372. <member name="M:SafeCampus.Cache.MemoryCacheService.TryGetValue``1(System.String,``0@)">
  373. <inheritdoc/>
  374. </member>
  375. <member name="M:SafeCampus.Cache.MemoryCacheService.Decrement(System.String,System.Int64)">
  376. <inheritdoc/>
  377. </member>
  378. <member name="M:SafeCampus.Cache.MemoryCacheService.Decrement(System.String,System.Double)">
  379. <inheritdoc/>
  380. </member>
  381. <member name="M:SafeCampus.Cache.MemoryCacheService.Increment(System.String,System.Int64)">
  382. <inheritdoc/>
  383. </member>
  384. <member name="M:SafeCampus.Cache.MemoryCacheService.Increment(System.String,System.Double)">
  385. <inheritdoc/>
  386. </member>
  387. <member name="M:SafeCampus.Cache.MemoryCacheService.Commit">
  388. <inheritdoc/>
  389. </member>
  390. <member name="M:SafeCampus.Cache.MemoryCacheService.AcquireLock(System.String,System.Int32)">
  391. <inheritdoc/>
  392. </member>
  393. <member name="M:SafeCampus.Cache.MemoryCacheService.AcquireLock(System.String,System.Int32,System.Int32,System.Boolean)">
  394. <inheritdoc/>
  395. </member>
  396. <member name="T:SafeCampus.Cache.RedisCacheService">
  397. <summary>
  398. <inheritdoc cref="T:SafeCampus.Cache.ISimpleCacheService"/>
  399. Redis缓存
  400. </summary>
  401. <summary>
  402. <inheritdoc cref="T:SafeCampus.Cache.ISimpleCacheService"/>
  403. Redis缓存
  404. </summary>
  405. </member>
  406. <member name="M:SafeCampus.Cache.RedisCacheService.HashAdd``1(System.String,System.String,``0)">
  407. <inheritdoc/>
  408. </member>
  409. <member name="M:SafeCampus.Cache.RedisCacheService.HashSet``1(System.String,System.Collections.Generic.Dictionary{System.String,``0})">
  410. <inheritdoc/>
  411. </member>
  412. <member name="M:SafeCampus.Cache.RedisCacheService.HashDel``1(System.String,System.String[])">
  413. <inheritdoc/>
  414. </member>
  415. <member name="M:SafeCampus.Cache.RedisCacheService.HashGet``1(System.String,System.String[])">
  416. <inheritdoc/>
  417. </member>
  418. <member name="M:SafeCampus.Cache.RedisCacheService.HashGetOne``1(System.String,System.String)">
  419. <inheritdoc/>
  420. </member>
  421. <member name="M:SafeCampus.Cache.RedisCacheService.HashGetAll``1(System.String)">
  422. <inheritdoc/>
  423. </member>
  424. <member name="M:SafeCampus.Cache.RedisCacheService.Get``1(System.String)">
  425. <inheritdoc/>
  426. </member>
  427. <member name="M:SafeCampus.Cache.RedisCacheService.Remove(System.String[])">
  428. <inheritdoc/>
  429. </member>
  430. <member name="M:SafeCampus.Cache.RedisCacheService.Set``1(System.String,``0,System.Int32)">
  431. <inheritdoc/>
  432. </member>
  433. <member name="M:SafeCampus.Cache.RedisCacheService.Set``1(System.String,``0,System.TimeSpan)">
  434. <inheritdoc/>
  435. </member>
  436. <member name="M:SafeCampus.Cache.RedisCacheService.SetExpire(System.String,System.TimeSpan)">
  437. <inheritdoc/>
  438. </member>
  439. <member name="M:SafeCampus.Cache.RedisCacheService.GetExpire(System.String)">
  440. <inheritdoc/>
  441. </member>
  442. <member name="M:SafeCampus.Cache.RedisCacheService.ContainsKey(System.String)">
  443. <inheritdoc/>
  444. </member>
  445. <member name="M:SafeCampus.Cache.RedisCacheService.Clear">
  446. <inheritdoc/>
  447. </member>
  448. <member name="M:SafeCampus.Cache.RedisCacheService.DelByPattern(System.String)">
  449. <inheritdoc/>
  450. </member>
  451. <member name="M:SafeCampus.Cache.RedisCacheService.GetAll``1(System.Collections.Generic.IEnumerable{System.String})">
  452. <inheritdoc/>
  453. </member>
  454. <member name="M:SafeCampus.Cache.RedisCacheService.SetAll``1(System.Collections.Generic.IDictionary{System.String,``0},System.Int32)">
  455. <inheritdoc/>
  456. </member>
  457. <member name="M:SafeCampus.Cache.RedisCacheService.GetDictionary``1(System.String)">
  458. <inheritdoc/>
  459. </member>
  460. <member name="M:SafeCampus.Cache.RedisCacheService.GetQueue``1(System.String)">
  461. <inheritdoc/>
  462. </member>
  463. <member name="M:SafeCampus.Cache.RedisCacheService.GetStack``1(System.String)">
  464. <inheritdoc/>
  465. </member>
  466. <member name="M:SafeCampus.Cache.RedisCacheService.GetSet``1(System.String)">
  467. <inheritdoc/>
  468. </member>
  469. <member name="M:SafeCampus.Cache.RedisCacheService.Add``1(System.String,``0,System.Int32)">
  470. <inheritdoc/>
  471. </member>
  472. <member name="M:SafeCampus.Cache.RedisCacheService.GetList``1(System.String)">
  473. <inheritdoc/>
  474. </member>
  475. <member name="M:SafeCampus.Cache.RedisCacheService.Replace``1(System.String,``0)">
  476. <inheritdoc/>
  477. </member>
  478. <member name="M:SafeCampus.Cache.RedisCacheService.TryGetValue``1(System.String,``0@)">
  479. <inheritdoc/>
  480. </member>
  481. <member name="M:SafeCampus.Cache.RedisCacheService.Decrement(System.String,System.Int64)">
  482. <inheritdoc/>
  483. </member>
  484. <member name="M:SafeCampus.Cache.RedisCacheService.Decrement(System.String,System.Double)">
  485. <inheritdoc/>
  486. </member>
  487. <member name="M:SafeCampus.Cache.RedisCacheService.Increment(System.String,System.Int64)">
  488. <inheritdoc/>
  489. </member>
  490. <member name="M:SafeCampus.Cache.RedisCacheService.Increment(System.String,System.Double)">
  491. <inheritdoc/>
  492. </member>
  493. <member name="M:SafeCampus.Cache.RedisCacheService.Commit">
  494. <inheritdoc/>
  495. </member>
  496. <member name="M:SafeCampus.Cache.RedisCacheService.AcquireLock(System.String,System.Int32)">
  497. <inheritdoc/>
  498. </member>
  499. <member name="M:SafeCampus.Cache.RedisCacheService.AcquireLock(System.String,System.Int32,System.Int32,System.Boolean)">
  500. <inheritdoc/>
  501. </member>
  502. <member name="T:SafeCampus.Cache.Startup">
  503. <summary>
  504. AppStartup启动类
  505. </summary>
  506. </member>
  507. <member name="M:SafeCampus.Cache.Startup.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
  508. <summary>
  509. ConfigureServices中不能解析服务,比如App.GetService(),尤其是不能在ConfigureServices中获取诸如缓存等数据进行初始化,应该在Configure中进行
  510. 服务都还没初始化完成,会导致内存中存在多份 IOC 容器!!
  511. 正确应该在 Configure 中,这个时候服务(IServiceCollection 已经完成 BuildServiceProvider() 操作了
  512. </summary>
  513. <param name="services"></param>
  514. </member>
  515. </members>
  516. </doc>