Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon mvvmcross 6.2.2에서 어떤 변화가 있었는지 널 참조 예외에 영향을 줄 수 있습니다.


mvvmcross 6.2.2에서 어떤 변화가 있었는지 널 참조 예외에 영향을 줄 수 있습니다.


MVVMCross 버전 6.2.2에서 NULL 참조 예외 (NRE)의 발생에 영향을 줄 수있는 몇 가지 변경이 이루어졌습니다. 주요 수정은 다음과 같습니다.

1. IOC 제공 업체 초기화 : 중 하나의 중요한 변경 사항은`mvx.iocprovider`의 초기화와 관련이 있습니다. 이 버전 이전에 IOC 제공 업체가 올바르게 설정되지 않은 경우 뷰 모델에서`mvxasynccommand`와 같은 명령을 구성 할 때 NULL 참조 예외로 이어질 수 있습니다. 'MVXCommandBase`의 생성자는 IOC 제공 업체가 NULL이거나'IMVXCommandHelper '의 인스턴스를 해결하지 못하는 경우`MVXWEAKCOMMANDHELPER'를 사용하는 폴백 메커니즘을 포함하도록 업데이트되었습니다. 이 변경 사항은 IOC 제공 업체가 완전히 초기화되지 않더라도 명령이 여전히 작동 할 수 있도록 NRE를 완화하는 것을 목표로합니다 [1].

2. 오류 처리 개선 : 프레임 워크의 여러 부분에서 잠재적 널 참조의 처리가 개선되었습니다. 예를 들어, 특정 속성과 메소드가 널 객체를 대기하려고 시도하지 않도록 확인이 추가되었습니다. 이는 항상 이용할 수없는 외부 서비스 또는 종속성에 의존하는 구성 요소와 관련이 있습니다 [1].

3. 단위 테스트 조정 : 사용자는`mvxasynccommand`를 사용할 때 널 참조 예외로 인해 단위 테스트가 실패한 문제를보고했습니다. 유닛 테스트 프로젝트에서 IOC 제공 업체를 명시 적으로 초기화하기 위해 권장 사항이있었습니다. 이 조정은 테스트를 실행하기 전에 모든 종속성이 올바르게 해결되도록하여 테스트 시나리오 동안 NRE가 발생할 가능성을 줄입니다 [1].

4. 일반 버그 수정 : MVVMCross 6.2.2의 릴리스 노트는 NULL 참조 예외와 관련된 여러 버그가 해결되었음을 나타냅니다. 각 수정 사항에 대한 특정 세부 사항은 광범위하게 문서화되지 않았습니다. 이러한 수정에는 NRE가 이전에보고 된 프레임 워크의 다양한 구성 요소에 걸친 조정이 포함될 수있다 [10].

전반적으로, MVVMCross 6.2.2의 이러한 변화는 명령 실행 및 종속성 해상도의 안정성과 신뢰성을 향상시키는 데 중점을 둡니다. 초기화 프로세스 및 오류 처리를 향상시킴으로써 개발자는이 프레임 워크를 사용하여 구축 된 응용 프로그램의 예외가 줄어드는 것을 기대할 수 있습니다.

인용 :
[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references when-unit-testing-mxvasynccommand
[2] https://www.mvvmcross.com/mvvmcross-8.0.0-release/
[3] https://pvs-studio.com/en/blog/posts/csharp/1049/
[4] https://www.youtube.com/watch?v=uzsdzok4un8
[5] https://github.com/mvvmcross/mvvmcross/releases
[6] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[7] https://github.com/mvvmcross/mvvmcross/issues/3310
[8] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md
[9] https://www.reddit.com/r/dotnetmaui/comments/1bpfvky/cannot_pair_to_mac_null_reference_exception/
[10] https://www.mvvmcross.com/mvvmcross-6.2.0-release/