Brak konwersji parametrów boksu lub typu dla ogólnego parametru typu

Mam następującą metodę pomocy:

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

Chcę użyć tej metody od wewnątrz innej metody w innym pomocniku:

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

Ale wtedy pojawia się błąd:

Typu „T” nie można użyć jako parametru typu „T” w typie ogólnym lub metodzie „MyExtensions.CreateRequest ()”. Nie ma konwersji boksu ani konwersji parametru typu z „T” na „MyNamespace.Request”.

Czy istnieje sposób na rzutowanie typu „T”, tak aby CreateRequest używał go bez problemów?

EDYTOWAĆ:

Wiem, że mogę zrobić dwie rzeczy:

rozluźnić ograniczenia na CreateRequest lubdokręć ograniczenia na mapie.

Ale nie mogę zrobić pierwszego, ponieważ w CreateRequest I używam właściwości klasy Request i nie mogę zrobić drugiego, ponieważ używam innych typów (które nie dziedziczą po Request) z funkcją Map.

questionAnswers(2)

yourAnswerToTheQuestion