Jest to wewnętrzna klasa pomocnicza o widoczności internal
. Dlatego nie udało ci się go zlokalizować.
Kod źródłowy firmy Microsoft używa tego wzorca w różnych miejscach.
Ale dlaczego to robisz? Umożliwia on rzutowanie spójnego, dobrze sformatowanego, zlokalizowanego wyjątku bez konieczności umieszczania tej logiki w każdej procedurze obsługi wyjątku.
Biorąc to krok dalej, niektóre definicje nawet zawierać wskazówki kompilatora, takie jak:
internal static ArgumentException InvalidEnumArgument(string parameterName, int invalidValue, Type enumClass) {
#if NETFX_CORE
return new ArgumentException(Error.Format(CommonWebApiResources.InvalidEnumArgument, parameterName, invalidValue, enumClass.Name), parameterName);
#else
return new InvalidEnumArgumentException(parameterName, invalidValue, enumClass);
#endif
}
innych metod (takich jak PropertyNull()
) urządzone są w wiadomościach kół analizy kodu.
Ponownie, jest to po prostu mechanizm wygody/spójności, aby uniknąć powtarzania tego kodu w każdym miejscu.
Prawdopodobnie nie sugerowałbym próby użycia tego dokładnego kodu we własnym projekcie, ponieważ twoje potrzeby będą różne. Ale na pewno możesz go użyć jako wzorca.
Ja preferuję jeszcze mniejszą skalę, używając metody pomocniczej do obsługi 'if' * i *' rzutu'. Ex: 'ArgumentHelper.ThrowIfNull (arg," name ");' (co oczywiście może być metodą rozszerzenia). –