相关疑难解决方法(0)

在强制执行T类型的同时将通用类型"强制转换为T"

我想在这里错过了一个技巧,我不敢相信我以前从未这样做过.但是,如何使用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"运算符一起使用,因为它没有类类型约束,也没有"类"约束 …

c# asp.net generics

21
推荐指数
2
解决办法
1万
查看次数

标签 统计

asp.net ×1

c# ×1

generics ×1