Confronto null o predefinito di argomento generico in C #

Ho un metodo generico definito in questo modo:

public void MyMethod(T myArgument) 

La prima cosa che voglio fare è controllare se il valore di myArgument è il valore predefinito per quel tipo, qualcosa del genere:

 if (myArgument == default(T)) 

Ma questo non viene compilato perché non ho garantito che T implementerà l’operatore ==. Così ho cambiato il codice con questo:

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

Ora questo compila, ma fallirà se myArgument è nullo, che è parte di ciò che sto testando. Posso aggiungere un controllo nullo esplicito come questo:

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

Ora mi sembra ridondante. ReSharper sta anche suggerendo di cambiare la mia parte null myArgument == in myArgument == default (T), che è dove ho iniziato. C’è un modo migliore per risolvere questo problema?

Devo supportare sia i tipi di riferimenti che i tipi di valore.