我想在这里错过了一个技巧,我不敢相信我以前从未这样做过.但是,如何使用as关键字转换泛型类型?
[Serializable]
public abstract class SessionManager<T> where T : ISessionManager
{
protected SessionManager() { }
public static T GetInstance(HttpSessionState session)
{
// Ensure there is a session Id
if (UniqueId == null)
{
UniqueId = Guid.NewGuid().ToString();
}
// Get the object from session
T manager = session[UniqueId] as T;
if (manager == null)
{
manager = Activator.CreateInstance<T>();
session[UniqueId] = manager;
}
return manager;
}
protected static string UniqueId = null;
}
Run Code Online (Sandbox Code Playgroud)
该行T manager = session[UniqueId] as T;引发以下错误:
类型参数"T"不能与"as"运算符一起使用,因为它没有类类型约束,也没有"类"约束 …