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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta