嵌套类访问嵌套类的哪些字段?

我在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上下文? 如果没有,是否可以存储对它的引用?

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

但是,您可以访问包含类的所有私有成员 – 具有适用于实例成员的引用。

 System.Web.HttpContext.Current 

我可以想到几件事。

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

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

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