Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon [필수] 속성은 MVVMCross API에서 무효 유형과 어떻게 상호 작용합니까?


[필수] 속성은 MVVMCross API에서 무효 유형과 어떻게 상호 작용합니까?


C#에있는`필수]`속성은 JSON과 같은 데이터를 사로화 할 때 속성을 제공 해야하는지 확인하는 데 사용됩니다. 그러나 무효 유형과 결합하면 무효 유형이 무일하게 될 수 있기 때문에 반 직관적 인 것처럼 보일 수 있습니다. 이 조합은 종종 언더 포스트 공격으로부터 보호하는 데 사용되며, 악의적 인 사용자는 요청에서 속성을 생략하여 모델 바인더가 오류를 올리는 대신 기본값을 할당하게합니다 [4].

MVVM (Model-View-ViewModel) 패턴을 사용하여 크로스 플랫폼 애플리케이션을 구축하기위한 프레임 워크 인 MVVMCross의 맥락에서`[필수]`속성과 무효 유형 간의 상호 작용은 직접 해결되지 않습니다. MVVMCross는 주로 뷰와 뷰 모델 간의 데이터 바인딩 및 탐색에 중점을 둡니다. 그러나 C#에서 Nullable 유형의 작동 방식을 이해하면 개발자가 MVVMCross 응용 프로그램 내에서 데이터 일관성 및 검증을 관리하는 데 도움이 될 수 있습니다.

nullable 유형 이해

C# 8.0 도입 Nullable 참조 유형을 도입하여 개발자는 참조 유형이 널이 될 수 있는지 명시 적으로 표시 할 수 있습니다. 이 기능은 NULL 값이 제대로 처리되지 않을 때 컴파일 타임에서 경고를 제공하여 NULL 참조 예외를 방지합니다 [7]. `[필수]`속성과 함께 무효 유형을 사용하면 속성은 값이 명시 적으로 제공되도록하는 반면, Nullable 유형은 특정 시나리오에서 NULL이 유효한 입력 일 가능성을 허용합니다 [4].

nullable 유형과 함께 [필수]를 사용합니다

속성이 제공되도록 시행 할 필요가 있지만 NULL (예 : 부동산이 NULL로 명시 적으로 설정 될 수있는 JSON 페이로드를 처리 할 수있는 JSON 페이로드를 처리 할 수있는 경우)을 시행 해야하는 시나리오에서는``필수] '속성을 사용하여 Nullable 유형을 사용하는 것이 도움이 될 수 있습니다. 그러나이 접근법은 주로 MVVMCross 내에서 직접보다는 웹 API 또는 유사한 컨텍스트의 데이터 검증에 적용됩니다.

MVVMCross 애플리케이션의 경우 View 모델 내에서 속성이 올바르게 초기화되고 검증되도록하는 것이 중요합니다. MVVMCross는 고유 한 방식으로`required] 속성과 직접 상호 작용하지 않지만 개발자는 C#의 무효 기준 유형 및 유효성 검사 속성을 활용하여 애플리케이션 전반에 걸쳐 데이터 무결성을 관리 할 수 ​​있습니다.

mvvmcross의 사용자 정의 검증

MVVMCross 응용 프로그램 내에서 특정 유효성 검사 규칙을 시행 해야하는 경우보기 모델 내에서 사용자 정의 검증 로직을 구현하는 것을 고려할 수 있습니다. 여기에는 널 값을 확인하거나 비즈니스 로직을 진행하기 전에 특정 속성이 채워질 수 있습니다. MVVMCross는 맞춤형 데이터 바인딩 및 상호 작용 처리 메커니즘을 제공하며, 이러한 검증을 구현하는 데 사용할 수 있습니다 [5].

요약하면,`필수]`속성 및 무효 유형은 주로 웹 API와 같은 데이터 유효성 검사 컨텍스트에 사용되지만 상호 작용을 이해하면 MVMCROSS 개발자가 응용 프로그램 내에서 데이터 일관성 및 검증을 관리하는 데 도움이 될 수 있습니다. 그러나 MVVMCross 자체는 웹 프레임 워크가 할 수있는 방식에 대한`필수]`속성에 대한 구체적인 내장 지원이 없습니다.

인용 :
[1] https://stackoverflow.com/questions/47074979/mvvmcross-view-model-mvxintercation-is-always-null
[2] https://dev.to/theramoliya/c-required-attribute-for-nullable-reference-types-44hb
[3] https://www.reddit.com/r/csharp/comments/10wayn5/required_attribute_and_null_help/
[4] https://stackoverflow.com/questions/43688968/what-does-it-mean-for--property-to-be-required-nullable
[5] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[6] https://learn.microsoft.com/en-us/dotnet/csharp/nullable-references
[7] https://devblogs.microsoft.com/dotnet/embracing-nullable-reference-types/
[8] https://www.reddit.com/r/blazor/comments/14x5krd/nullable_types_and_required_keyword_how_is/