저는 현재 비교적 큰 개체를 역 직렬화하는 응용 프로그램을 작성 중입니다 (사용자가 추가하는 항목에 따라 크기가 커질 수도 있음). 나는 그것들이 많을 때 문제를 일으킬 수 있기 때문에 그것들을 모두 RAM에로드하고 싶지 않다.
어쨌든 이미 내 문제가있는 경우 해당 클래스의로드 된 인스턴스에서 발생하는 이벤트를 처리하고 싶습니다.
여전히 null 인 개체에 이벤트 처리기를 구독하려면 어떻게해야합니까?
나는 "객체가 있고 이벤트가 발생하면 그 메소드로 그것을 처리한다"와 같은 것을 생각한다.
다음은 몇 가지 샘플 코드와 내가 이미 작동하지 않는다고 생각했지만 생각할 수있는 유일한 방법입니다 ..
public class MyClassA
{
public event EventHandler PropertyChanged;
private string someProperty
public string SomeProperty
{
set
{
someProperty = value;
PropertyChanged?.Invoke(this, EventArgs.Empty);
}
}
public static MyClassA Load(string path)
{
/*...*/
}
}
public class MyClassB
{
public MyClassA InstanceOfA { get; private set; }
public MyClassB
{
//InstanceOfA.PropertyChanged += MyEventHandler; Not working, NullReference
}
// Handle InstanceOfA.PropertyChanged here...
public void MyEventHandler(object sender, EventArgs e)
{
/*...*/
}
}
물론 여전히 null 인 개체에 이벤트 처리기를 구독 할 수는 없지만 null이 아닌 값을 할당하면 구독 할 수 있습니다.
속성과 지원 필드를 사용하십시오.
public class MyClassB
{
private MyClassA myVar;
public MyClassA InstanceOfA
{
get { return myVar; }
private set
{
myVar = value;
if (myVar != null)
myVar.PropertyChanged += MyEventHandler;
}
}
public void MyEventHandler(object sender, EventArgs e)
{
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다