Przeczytałem dzisiaj o kontraktach kodu C# 4.0. Wydaje się, że powszechną praktyką dla walidacji parametru do metody nie jest null jest w następujący sposób:C# code contract - unikanie sprawdzania parametrów dla zerowych odniesień
Contract.Requires(p != null);
Jednak wydaje się zupełnie nieuzasadnione mi się, że będę musiał to zrobić dla każdego parametru każdej metody interfejsu w moim kodzie. W ogromnej większości przypadków oczekuje się, że parametry nie będą miały wartości NULL. Spodziewam się, że istnieje jakiś mechanizm, który pozwala na zdefiniowanie pewnych określonych parametrów, które są "dozwolone", aby były zerowe (podobnie do adnotacji "@Nullable" w Javie), a struktura Kontraktów automatycznie zapewni, że pozostałe nie będą zero.
Oprócz zaoszczędzenia zbyt wiele czasu na tych "sprawdzonych wzorcach" (jak również w wielu "klasach kontraktów", tyle razy po prostu nie ma żadnych warunków do zweryfikowania, z wyjątkiem parametrów innych niż zerowe), spowoduje to również czystsze kody kontraktów i bardziej "zorientowane na logikę".
Moje pytanie brzmi: czy jest jakiś sposób, aby to zrobić, a jeśli nie, to gdzie go nie ma, albo dlaczego moje podejście tutaj jest złe?
Byłoby użyteczne, ale nie ma żadnego stenogramu, aby to zrobić, ponieważ nikt nie zmienił specyfikacji języka, aby go podać, a następnie zaimplementował i opublikował. Zobacz odpowiedź Eric'a Lippert'a na podobne pytanie: http://stackoverflow.com/questions/2806894/why-c-sharp-doesnt-implement-indexed-properties –
Możesz użyć fragmentu 'crn', aby automatycznie wygenerować zestaw znaków dla te niezerowe instrukcje, które zmniejszają trochę pisanie. –