1. 实现了Tag的Get/Set接口

This commit is contained in:
fengjiayi
2025-08-25 11:16:15 +08:00
parent 6869b91f70
commit 0dcb0ff947
2 changed files with 27 additions and 7 deletions

View File

@@ -3,6 +3,7 @@ using Serein.Library.Utils;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
@@ -126,6 +127,24 @@ namespace Serein.Library.Api
/// <param name="data"></param>
void AddOrUpdate(string nodeModel, object data);
/// <summary>
/// 设置共享对象(在同一个上下文中保持一致)
/// </summary>
/// <param name="tag"></param>
void SetTag(object tag);
/// <summary>
/// 指定泛型尝试获取共享对象(在同一个上下文中保持一致)
/// </summary>
/// <typeparam name="T"></typeparam>
T? GetTag<T>();
/// <summary>
/// 指定泛型尝试获取共享对象(在同一个上下文中保持一致)
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="tag"></param>
bool TryGetTag<T>(out T? tag);
/// <summary>
/// 重置流程状态(用于对象池回收)

View File

@@ -266,7 +266,7 @@ namespace Serein.Library
/// 设置共享对象,不建议设置非托管对象
/// </summary>
/// <param name="tag"></param>
private void SetTag(object tag)
public void SetTag(object tag)
{
lock (_tagLockObj)
{
@@ -275,10 +275,11 @@ namespace Serein.Library
}
/// <summary>
/// 获取共享对象(将在同一个 Web Socket 调起的上下文中保持一致)
/// 指定泛型获取共享对象在同一个上下文中保持一致
/// </summary>
/// <typeparam name="T"></typeparam>
private T? GetTag<T>()
/// <returns></returns>
public T? GetTag<T>()
{
TryGetTag(out T? tag);
return tag;
@@ -286,11 +287,11 @@ namespace Serein.Library
#if NET6_0_OR_GREATER
/// <summary>
/// 获取共享对象(将在同一个 Web Socket 调起的上下文中保持一致)
/// 指定泛型尝试获取共享对象在同一个上下文中保持一致
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="tag"></param>
private bool TryGetTag<T>([NotNullWhen(true)] out T? tag)
public bool TryGetTag<T>([NotNullWhen(true)] out T? tag)
{
lock (_tagLockObj)
{
@@ -306,11 +307,11 @@ namespace Serein.Library
#else
/// <summary>
/// 获取共享对象(将在同一个 Web Socket 调起的上下文中保持一致)
/// 指定泛型尝试获取共享对象在同一个上下文中保持一致
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="tag"></param>
private bool TryGetTag<T>(out T? tag)
public bool TryGetTag<T>(out T? tag)
{
lock (_tagLockObj)
{