Tengo un método genérico cuyo comportamiento depende de T es el tipo de referencia o el tipo de valor. Se ve tan:¿Cómo determinar si T es un tipo de valor o una clase de referencia en genérico?
T SomeGenericMethod <T> (T obj)
{
if (T is class) //What condition I must write in the brackets?
//to do one stuff
else //if T is a value type like struct, int, enum and etc.
//to do another stuff
}
que no puede duplicar este método como:
T SomeGenericMethod <T> (T obj) where T : class
{
//Do one stuff
}
T SomeGenericMethod <T> (T obj) where T : struct
{
//Do another stuff
}
debido a que sus firmas son iguales. ¿Alguien puede ayudarme?
Gracias por su explicación adicional sobre los tipos de valor que aceptan valores. – mkus
La segunda opción es una posible comparación de un tipo de valor con nulo, que es algo que a ReSharper le gusta ladrar. ¿Hay alguna forma de evitar eso? – bubbleking
@bubbleking: Depende de lo que estés tratando de lograr, realmente ... –