, 그래서 다음 중 하나를
public static class SessionInformation
{
private static readonly string UserName = "something";
private static readonly string PluginID = "something else";
private static readonly string SessionID = "some session";
}
또는
public static class SessionInformation
{
static SessionInformation()
{
UserName = "something";
PluginID = "something else";
SessionID = "some session";
}
}
그리고 아니, 그것은이 문제를 :) 같은 세션 정보를 저장하는 것은 좋은 생각이 아니다 정적 멤버가 실제로 매우 복잡하기 때문에 이러한 값이 실제로 할당되는시기를 거의 제어 할 수 없습니다. 더 중요한 것은, 당신은 거의
그들을 변경할 수 없습니다. 따라서
HttpContext
과 같은 클래스는 정적 필드를 사용하지 않고 대신
HttpContext.Current
과 같은 정적 속성을 통해 액세스되는 일반 인스턴스입니다.
좀 더 실제적인 방법은 값을 할당 할 때를보다 잘 제어하고 매개 변수로 전달할 수 있도록하는 일종의 싱글 톤 패턴을 사용하는 것입니다. 그런 다음 필드는 읽기 전용이지만 외부에서 할당됩니다 (한 번). 당신이하지 예를 들어, 전체 읽기 전용에 초점을 맞춘 경우도
는 더 나은 해결책이있을 수 :
public static class SessionInformation
{
private static bool hasBeenSet = false;
public static string UserName { get; private set; }
public static void SetValues(string userName)
{
if (hasBeenSet) return;
UserName = userName;
hasBeenSet = true;
}
}
이 readonly
필드없이 거의 당신이 원하는 것을 - 그들이에서 읽기 전용 효과적이다 밖에.
아니요. 나는 OP가 클래스에이 값들을 제공 할것이라고 생각한다. –
정보가 동적이다. – Ahsan
@operation 즉, '정적 읽기 전용', 평범하고 단순한 것을 사용할 수 없음을 의미합니다. – Luaan