【发布时间】:2022-01-03 21:27:06
【问题描述】:
我有一个 Blazor 服务器应用。我想在会话中存储一些数据。我正在尝试创建一个会话助手类,我将会话名称存储为枚举,因此它们始终是强类型的。同样在这堂课中,我想把 Get 和 Set。所以我不需要到处做很多注射。会话值可以是字符串、对象。列表等...我开始创建下面的课程,但遇到了一些问题:
- 我可以在静态方法中创建以下内容,这样我就不会每次都有新的 SessionManager 对象
- 如何让 Get 返回任何类型的对象。我想我需要让它通用一些。
任何帮助将不胜感激
TIA
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage;
using System.Threading.Tasks;
namespace Core
{
public class SessionManager
{
[Inject] ProtectedSessionStorage storage { get; set; }
public enum eSessionNames
{
UserName,
UserRow
}
public async Task SetSession(eSessionNames SessionName, object Value)
{
await storage.SetAsync(SessionName.ToString(), Value);
}
public async Task<T> GetSession(eSessionNames SessionName)
{
return await storage.GetAsync<T>(SessionName.ToString());
}
}
}
MY DAL trying to use your method
public async static Task<Models.myModel> GetUserFromProtectedBrowserStorageAsync(string UserNetworkID)
{
using (var connection = new SqlConnection(Core.ConnectionStringManager.GetConnectionString()))
{
await connection.OpenAsync();
MyBlogProtectedBrowserStorage pbs = new(); //I get an error on this line as im not sure how to new the object
Models.myModel output = await pbs.GetAsync<Models.myModel>("UserRow");
if (output == null)
{
var values = new { UserNetworkID };
output await connection.QuerySingleAsync<CsatUserModel>("SELECT * FROM tblUsers WHERE NetworkID = @UserNetworkID", values, commandType: CommandType.Text);
pbs.SetAsync<Models.myModel>("UserRow", output);
return output;
}
else
{
return output;
}
}
}
【问题讨论】:
标签: blazor