È una classe di supporto interna, con visibilità internal
. Ecco perché non sei stato in grado di individuarlo.
Il codice sorgente Microsoft utilizza questo modello in una varietà di luoghi.
Ma perché farlo? Ti permette di lanciare un'eccezione coerente, ben formattata, localizzata senza dover mettere quella logica in ogni gestore di eccezioni.
Facendo che un passo ulteriore, alcune definizioni contengono anche istruzioni di compilatore, quali:
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
}
Altri metodi (come PropertyNull()
) sono decorate con messaggi di soppressione di analisi del codice.
Ancora una volta, è semplicemente un meccanismo di convenienza/coerenza per evitare di ripetere questo codice dappertutto.
Probabilmente non suggerirei di provare a utilizzare questo codice esatto nel tuo progetto, perché le tue esigenze saranno diverse. Ma puoi certamente usarlo come schema.
fonte
2013-03-29 23:05:30
Io preferisco anche un numero minore di caratteri, usando un metodo di supporto per gestire il comando 'if' * e * il' throw'. Es: 'ArgumentHelper.ThrowIfNull (arg," name ");' (che potrebbe essere un metodo di estensione, ovviamente). –