Comparação nula ou padrão de argumento genérico em C #

Tenho um método genérico definido assim:

public void MyMethod<T>(T myArgument)

A primeira coisa que quero fazer é verificar se o valor de myArgument é o valor padrão para esse tipo, algo como isto:

if (myArgument == default(T))

Mas isso não é compilado, porque não garanti que T implementará o operador ==. Então mudei o código para isso:

if (myArgument.Equals(default(T)))

Agora isso compila, mas falhará se myArgument for nulo, o que é parte do que estou testando. Posso adicionar uma verificação nula explícita como esta:

if (myArgument == null || myArgument.Equals(default(T)))

Agora isso parece redundante para mim. O ReSharper está sugerindo que eu mude a parte nula myArgument == para myArgument == default (T), que é onde eu comecei. Existe uma maneira melhor de resolver esse problema?

Eu preciso apoiarambo referencia tipos e tipos de valo

questionAnswers(12)

yourAnswerToTheQuestion