아래에 설명 된 것처럼 두 개의 정적 객체간에 객체의 인스턴스를 공유해야합니다. 처음으로 속성을 호출하면 MyProperty
MyObject
을 인스턴스화해야합니다.정적 생성자 및 공유 데이터
영리한 독자로서, 당신은 버그를 발견했습니다. 처음으로 First
을 사용할 때 MyProperty
을 인스턴스화하고 Second
을 처음 사용할 때 MyProperty
을 인스턴스화합니다. 그것은 다시 초기화되고이 객체의 모든 상태가 느슨합니다. 냄새 거기에 나를 위해,
static Second()
{
if(MyProperty == null) MyProperty = new MyObject();
}
그러나 :
public static class First
{
static First() { MyProperty = new MyObject(); }
public static MyProperty{ get; set; }
}
public static class Second
{
static Second() { MyProperty = new MyObject(); }
public static MyProperty
{
get { return First.MyProperty; }
set { First.MyProperty= value; }
}
}
이 경우 해결책은 무효를 확인하는 것입니다. 나는 나쁜 코드의 느낌을 가지고있다. 그래서 거기에 내 질문 : 패턴 또는 두 가지 정적 개체간에 컨텍스트를 공유하는 좋은 조언이 있습니까?
왜 '정적'을 사용하고 있습니까? 그것은 이런 꼴을 만듭니다. –
"냄새"는 아직 다루지 않습니다 :) 당신이 요구하는 행동의 배경이 없으면 ('정적'이 현재의 해결책입니다) 좋은 대답을 얻는 것은 까다 롭습니다. 왜 First와 Second 둘 다 정적 일 필요가 있으며 왜 인스턴스 유형의 동일한 참조를 참조해야합니까? –
응용 프로그램의 다른 부분간에 공유 된 컨텍스트입니다. –