tengo el siguiente método de ayuda:Sin el boxeo o el tipo de conversión de parámetros para el parámetro genérico Tipo
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 el 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 entonces me sale el error:
The type 'T' cannot be used as type parameter 'T' in the generic type or method 'MyExtensions.CreateRequest()'. There is no boxing conversion or type parameter conversion from 'T' to 'MyNamespace.Request'.
¿hay una manera de convertir el tipo "T", de manera que woul createRequest d usarlo sin problemas?
EDIT:
Sé que puedo hacer dos cosas:
- aflojar las restricciones sobre createRequest o
- apriete contraints en Mapa.
Pero no puedo hacer la primera, porque en CreateRequest I las propiedades de usuario de la clase Request, y no puedo hacer la segunda, porque uso otros tipos (que no heredan de Request) con Map función.
que significa: "uno o ninguno" –