嵌套类可以嵌套在哪些字段中?

时间:2008-10-22 16:50:16

标签: c# web-services

我在C#中有一个Web服务,并希望有一个嵌套的内部类,它抽象出会话集合,如下所示:


public class Service : System.Web.Services.WebService
{
    [WebMethod]
    public string Foo(string ticket)
    {
        SessionPool.getSession(ticket);
    }

    private class SessionPool 
    {
        public static Session getSession(string ticket)
        {
            // this is what i want to do, but I can't access Context
            return (Session)Context.Session[ticket];
        }
    }
}

是否可以通过嵌套类访问WebService类的HTTP上下文?如果没有,是否可以存储对它的引用?

3 个答案:

答案 0 :(得分:5)

C#中的嵌套类与Java中的(非静态)内部类不同。没有对包含类的实例的隐式引用 - 因此,如果没有显式引用,则不能使用包含类的任何实例成员。

但是,您可以访问包含类的所有私有成员 - 并为实例成员提供合适的引用。

答案 1 :(得分:0)

System.Web.HttpContext.Current

答案 2 :(得分:0)

我可以想到几件事。

首先,您可以尝试使用getContext()而不是仅仅访问Context。如果有效,那就完成了。

如果没有,您可以将Service作为初始化程序传递给SessionPool。在从Foo()调用getSession()之前,通过调用setService()初始化SessionPool,添加一个WebService句柄。

虽然,在那一点上,为什么不直接将Context作为参数传递给getSession()?