null 인 참조를 위해 eventhandler 구독

스테판

저는 현재 비교적 큰 개체를 역 직렬화하는 응용 프로그램을 작성 중입니다 (사용자가 추가하는 항목에 따라 크기가 커질 수도 있음). 나는 그것들이 많을 때 문제를 일으킬 수 있기 때문에 그것들을 모두 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

인터페이스가 반환되는 개인 생성자에 의해 생성 된 클래스에서 공용 EventHandler를 구독 할 수 있습니까?

분류에서Dev

포인터에서 참조로 업그레이드-참조를 위해 NULL을 처리하는 방법

분류에서Dev

참조를 NULL로 위임

분류에서Dev

EventHandler를 EventHandler로

분류에서Dev

독자의 참조로 구조체를 역 직렬화하기 위해 Serde를 어떻게 사용합니까?

분류에서Dev

함수의 구문 및 인수를 참조하기 위해 SAS에서 도움말 호출

분류에서Dev

점 표기법을 사용하기 위해 c 구조 포인터 역 참조

분류에서Dev

점 표기법을 사용하기 위해 c 구조 포인터 역 참조

분류에서Dev

eventhandler를 추가 할 위치

분류에서Dev

가독성을 위해 부분 클래스를 사용하여 계층 적 인터페이스 구현

분류에서Dev

Mondrian-계층 구조에서 멤버를 참조하기 위해 명시적인 수준이 필요한 이유는 무엇입니까?

분류에서Dev

라인 변경을 위해 셀 참조

분류에서Dev

코호트 연구를 위해 Pyspark와 내부 조인

분류에서Dev

유형 추론으로 인해 Null 참조 발생

분류에서Dev

두 구독의 각도 조인 결과

분류에서Dev

Traefik 2 docker-compose 파일 내부 라우팅을 위해 정적 구성 내에서 TLS 인증서를 참조하는 방법

분류에서Dev

"범위를 벗어난 구독"오류를 극복하기 위해 Access VBA에 varData (0)가 있는지 확인하는 방법은 무엇입니까?

분류에서Dev

인터페이스 구현의 참조를 업데이트하기위한 패턴

분류에서Dev

removeCallbacks ()를 호출 할 때 runnable 내의 참조에서 null 포인터 예외를 방지하기 위해 권장되는 디자인 패턴은 무엇입니까?

분류에서Dev

참조 멤버 변수 초기화를위한 임시 포인터 역 참조

분류에서Dev

구조체에 대한 포인터를 이해하면 액세스 할 때 c의 포인터 멤버를 참조합니다.

분류에서Dev

폴더 구조를 만들기 위해 Tkinter의 버튼에 함수 바인딩

분류에서Dev

효율적인 추가를 위해 Julia의 권장 데이터 구조

분류에서Dev

이벤트 및 null 참조를 위임합니다.

분류에서Dev

개체를 null 참조와 비교할 때 위치의 영향

분류에서Dev

개체를 null 참조와 비교할 때 위치의 영향

분류에서Dev

인터페이스를 확인할 때 Ninject에 구성은 단독으로 해결하지

분류에서Dev

주제가 범위를 벗어날 때 구독을 취소하지 않으면 rxjs 주제에 대한 구독으로 인해 메모리 누수가 발생합니까?

분류에서Dev

EventHandler에서 preserveForm이 true 인 서버 전송은 해당 이벤트 핸들러를 다시 실행합니다.

Related 관련 기사

  1. 1

    인터페이스가 반환되는 개인 생성자에 의해 생성 된 클래스에서 공용 EventHandler를 구독 할 수 있습니까?

  2. 2

    포인터에서 참조로 업그레이드-참조를 위해 NULL을 처리하는 방법

  3. 3

    참조를 NULL로 위임

  4. 4

    EventHandler를 EventHandler로

  5. 5

    독자의 참조로 구조체를 역 직렬화하기 위해 Serde를 어떻게 사용합니까?

  6. 6

    함수의 구문 및 인수를 참조하기 위해 SAS에서 도움말 호출

  7. 7

    점 표기법을 사용하기 위해 c 구조 포인터 역 참조

  8. 8

    점 표기법을 사용하기 위해 c 구조 포인터 역 참조

  9. 9

    eventhandler를 추가 할 위치

  10. 10

    가독성을 위해 부분 클래스를 사용하여 계층 적 인터페이스 구현

  11. 11

    Mondrian-계층 구조에서 멤버를 참조하기 위해 명시적인 수준이 필요한 이유는 무엇입니까?

  12. 12

    라인 변경을 위해 셀 참조

  13. 13

    코호트 연구를 위해 Pyspark와 내부 조인

  14. 14

    유형 추론으로 인해 Null 참조 발생

  15. 15

    두 구독의 각도 조인 결과

  16. 16

    Traefik 2 docker-compose 파일 내부 라우팅을 위해 정적 구성 내에서 TLS 인증서를 참조하는 방법

  17. 17

    "범위를 벗어난 구독"오류를 극복하기 위해 Access VBA에 varData (0)가 있는지 확인하는 방법은 무엇입니까?

  18. 18

    인터페이스 구현의 참조를 업데이트하기위한 패턴

  19. 19

    removeCallbacks ()를 호출 할 때 runnable 내의 참조에서 null 포인터 예외를 방지하기 위해 권장되는 디자인 패턴은 무엇입니까?

  20. 20

    참조 멤버 변수 초기화를위한 임시 포인터 역 참조

  21. 21

    구조체에 대한 포인터를 이해하면 액세스 할 때 c의 포인터 멤버를 참조합니다.

  22. 22

    폴더 구조를 만들기 위해 Tkinter의 버튼에 함수 바인딩

  23. 23

    효율적인 추가를 위해 Julia의 권장 데이터 구조

  24. 24

    이벤트 및 null 참조를 위임합니다.

  25. 25

    개체를 null 참조와 비교할 때 위치의 영향

  26. 26

    개체를 null 참조와 비교할 때 위치의 영향

  27. 27

    인터페이스를 확인할 때 Ninject에 구성은 단독으로 해결하지

  28. 28

    주제가 범위를 벗어날 때 구독을 취소하지 않으면 rxjs 주제에 대한 구독으로 인해 메모리 누수가 발생합니까?

  29. 29

    EventHandler에서 preserveForm이 true 인 서버 전송은 해당 이벤트 핸들러를 다시 실행합니다.

뜨겁다태그

보관