MVVMCross의 Nullable 속성, 특히 7.1.0 및 8.0.0과 같은 버전의 Null State 분석 및 처리 및 처리를 향상시키기 위해 통합되었습니다. 이 통합은 개발자가 데이터 바인딩, 내비게이션 및 종속성 주입을 포함한 다양한 MVMCROSS 기능과 상호 작용하는 방식에 영향을 미칩니다.
데이터 바인딩에 미치는 영향
MVVMCross에서 데이터 바인딩은 ViewModel 속성을 연결하여 요소를 보는 중요한 기능입니다. 무효 속성을 사용하면 개발자는 뷰 모델의 속성이 무효가되지 않거나 무효화 불가능한 것으로 올바르게 주석을 달 수 있도록해야합니다. 이 주석은 데이터 바인딩이 널 값을 처리하는 방식에 영향을 미칩니다. 예를 들어, 속성이 무효화가 불가능한 것으로 표시되면 NULL 값을 전달하면 일반적으로 'argumentNullexception'이 발생하여 제대로 처리되지 않는 한 데이터 바인딩을 방해 할 수 있습니다 [1] [10].
데이터 바인딩에서 NULL 값을 관리하려면 개발자는`mvxValueConverter '와 같은 값 변환기를 사용하여 바운드 속성이 null 일 때 폴백 값을 제공 할 수 있습니다. 이 접근법을 사용하면 UI에 널이 표시되는 방법을보다 제어 할 수있어 데이터가 누락 된 경우에도 응용 프로그램이 사용자 친화적으로 유지되도록합니다 [6].
내비게이션과의 상호 작용
MVMCROSS의 내비게이션 시스템은 뷰 모델 및 매개 변수에 의존합니다. 무효 속성을 사용하면 ViewModel 매개 변수는 무효 점검을 지원하기위한 참조 유형이어야합니다. 이 요구 사항은 뷰 모델 간의 탐색이 널 값을 올바르게 처리하여 예기치 않은 충돌 또는 동작을 방지합니다 [1].
뷰 사이를 탐색 할 때 MVVMCross는 iOS의 경우`mvxPopoverPresentationAttibute` 및 Android의 경우 'MVXPRAGMENTPRESENTATIONATTribute`와 같은 프레젠테이션 속성을 사용합니다. 널 값을 처리하는 프레임 워크의 능력이 뷰가 제시되고 전환되는 방식에 영향을 미치기 때문에 이러한 속성은 무효가 될 수 있습니다 [1] [7].
종속성 주입 및 무효 성
MVVMCross의 종속성 주입 (DI) 시스템을 통해 서비스 및 인터페이스의 등록 및 해상도를 허용합니다. 무효가 가능한 속성을 사용하면 개발자는 DI 컨테이너에 등록 할 때 이러한 서비스의 무효가되는 것을 고려해야합니다. 이 고려 사항은 서비스가 제대로 등록되지 않거나 선택 사항 인 경우 NULL로 해결 될 수 있기 때문에 중요합니다 [8].
단위 테스트 시나리오에서 서비스를 해결할 때 널 참조 예외를 피하려면 IOCProvider가 올바르게 초기화되도록하는 것이 중요합니다. `mvxasynccommand`와 같은 mvvmcross 명령은 IOCProvider가 올바르게 작동하도록 설정되는 것에 의존하기 때문에이 초기화가 필요합니다 [11].
결론
요약하면, MVVMCross의 Nullable 속성은 데이터 바인딩, 내비게이션 및 종속성 주입을 포함하여 기능에서 널 값을 처리 할 수있는 프레임 워크의 기능을 향상시킵니다. 귀중한 속성으로 속성과 서비스를 올바르게 주석을 달면 개발자는 크로스 플랫폼 응용 프로그램에서 강력하고 예측 가능한 동작을 보장 할 수 있습니다. 그러나이를 위해서는 원활한 사용자 경험을 유지하기 위해 애플리케이션 전반에 걸쳐 NULL 값을 처리하는 방법을 신중하게 고려해야합니다.
인용 :[1] https://www.mvvmcross.com/mvvmcross-7.1.0-release/
[2] https://www.mvvmcross.com/documentation/getting-started/getting-started
[3] https://www.reddit.com/r/dotnet/comments/1dc0lq9/how_do_you_handle_api_models_with_nullability/
[4] https://www.mvvmcross.com/mvvmcross-8.0.0-release/
[5] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[6] https://stackoverflow.com/questions/36802966/show-a-value-in-case-of-null-in-mvvmcross
[7] https://www.mvvmcross.com/documentation/platform/android/android-view-presenter
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[9] https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/attributes/nullable-analysis
[10] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[11] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-hen-unit-testing-mxvasynccommand/53618570