Sin boxeo o conversión de parámetros de tipo para el parámetro Tipo genérico
Tengo el siguiente método de ayuda:
public static T CreateRequest<T>()
where T : Request, new()
{
T request = new T();
// ...
// Assign default values, etc.
// ...
return request;
}
Quiero usar este método desde el interior de otro método en otro ayudante:
public T Map<F, T>(F value, T toValue)
where T : new()
where F : new()
{
if (typeof(T).BaseType.FullName == "MyNamespace.Request")
{
toValue = MyExtensions.CreateRequest<T>();
}
else
{
toValue = new T();
}
}
Pero luego me sale el error:
El tipo 'T' no se puede usar como parámetro de tipo 'T' en el tipo o método genérico 'MyExtensions.CreateRequest ()'. No hay conversión de boxeo o conversión de parámetros de tipo de 'T' a 'MyNamespace.Request'.
¿Hay una manera de lanzar el tipo "T", para que CreateRequest lo use sin problemas?
EDITAR:
Sé que puedo hacer dos cosas:
aflojar las restricciones en CreateRequest oapretar las contraíntas en el mapa.Pero no puedo hacer lo primero, porque en CreateRequest I las propiedades de usuario de la clase de Solicitud, y no puedo hacer lo segundo, porque uso otros tipos (que no heredan de la Solicitud) con la función de Mapa.