嵌套类可以访问它所嵌套的类的哪些字段
本文关键字:嵌套 字段 访问 | 更新日期: 2023-09-27 17:47:21
>我有一个 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];
}
}
}
是否可以通过嵌套类访问 Web 服务类的 HTTP 上下文?如果没有,有没有办法存储对它的引用?
C# 中的嵌套类不像 Java 中的(非静态)内部类。没有对包含类的实例的隐式引用 - 因此,如果没有显式引用,则不能使用包含类的任何实例成员。
但是,您确实可以访问包含类的所有私有成员 - 具有实例成员的合适引用。
System.Web.HttpContext.Current
?
我能想到几件事。
首先,您可以尝试使用 getContext() 而不是仅访问 Context。 如果这有效,你就完成了。
如果没有,您可以将服务作为初始值设定项传递给您的会话池。 将一个 WebService 句柄添加到 SessionPool,在从 Foo() 调用 getSession() 之前,通过调用 setService() 进行初始化。
虽然,在这一点上,为什么不直接将上下文作为参数传递给getSession()呢?