Estoy tratando de comprender el concepto de .NET Generics y utilizarlos en mi propio código, pero sigo teniendo un problema..NET Método genérico Pregunta
¿Alguien puede tratar de explicarme por qué no se compila la siguiente configuración?
public class ClassA
{
ClassB b = new ClassB();
public void MethodA<T>(IRepo<T> repo) where T : ITypeEntity
{
b.MethodB(repo);
}
}
public class ClassB
{
IRepo<ITypeEntity> repo;
public void MethodB(IRepo<ITypeEntity> repo)
{
this.repo = repo;
}
}
me sale el siguiente error:
no se puede convertir de IRepo < 'T> a IRepo <' ITypeEntity>
MethodA se llama con un IRepo < 'DetailType> parámetro de objeto, donde DetailType hereda de ITypeEntity .
Sigo pensando que esto debería compilar ya que estoy restringiendo T en MethodA para que sea del tipo ITypeEntity.
Cualquier idea o comentario sería extremadamente útil.
Gracias.
Edit: Nick R tiene una gran sugerencia, pero desafortunadamente en mi contexto, no tengo la opción de hacer ClassA Genérico. ClassB podría ser sin embargo.
Si está generic'ing la primera clase también tendrá que ser generic'ed –
la segunda desgracia no tengo la opción de hacer claseA una clase genérica, ya que es un usuario ASP .Net Control y realmente no quiero tratar de resolver ese problema. Gracias por tu pensamiento. Era perfectamente razonable basado en el contexto limitado que di. –
En ese caso, ¿necesita usar genéricos? Me parece que el problema es porque ClassA contiene un objeto de tipo ClassB. Intente implementar primero sin medicamentos genéricos, eso puede ser adecuado. –