Вы все это делаете:
public void Proc(object parameter)
{
if (parameter == null)
throw new ArgumentNullException("parameter");
// Main code.
}
Джон Скит однажды упомянул, что он иногда использует расширение для выполнения этой проверки, поэтому вы можете сделать только:
parameter.ThrowIfNull("parameter");
Итак, я пришел с двумя реализациями этого расширения, и я не знаю, какой из них лучше.
Во-первых:
internal static void ThrowIfNull<T>(this T o, string paramName) where T : class
{
if (o == null)
throw new ArgumentNullException(paramName);
}
Во-вторых:
internal static void ThrowIfNull(this object o, string paramName)
{
if (o == null)
throw new ArgumentNullException(paramName);
}
Как вы думаете?