Sem conversão de parâmetro de boxe ou tipo para o parâmetro Type genérico

Eu tenho o seguinte método auxiliar:

public static T CreateRequest<T>()
    where T : Request, new()
{
    T request = new T();
    // ...
    // Assign default values, etc.
    // ...
    return request;
}

Eu quero usar esse método de dentro de outro método em outro auxiliar:

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();
    }
}

Mas então eu recebo o erro:

O tipo 'T' não pode ser usado como parâmetro de tipo 'T' no tipo genérico ou método 'MyExtensions.CreateRequest ()'. Não há nenhuma conversão de boxe ou conversão de parâmetro de tipo de 'T' para 'MyNamespace.Request'.

Existe uma maneira de converter o tipo "T", para que CreateRequest iria usá-lo sem problemas?

EDITAR:

Eu sei que posso fazer duas coisas:

afrouxe as restrições em CreateRequest ouaperte as restrições no mapa.

Mas eu não posso fazer o primeiro, porque em CreateRequest eu propriedades do usuário da classe Request, e eu não posso fazer o segundo, porque eu uso outros tipos (que não herdam de Request) com a função Map.

questionAnswers(2)

yourAnswerToTheQuestion