Tengo una situación en la que tengo una claseinterfaz para el método que devuelve su propio tipo
class Foo
{
Foo Bar()
{
return new Foo();
}
}
Ahora i wan tot crear una interfaz para que
class IFoo
{
??? Bar();
}
¿Cuál debería ser en lugar de la ¿signos de interrogación? Cada clase debe devolver su propio tipo, no Foo.
Las siguientes soluciones funcionan pero no se ven limpias. No entiendo por qué tengo que especificar la misma clase dos veces, y no hay nada como "presente" para el tipo actual
Así es como lo estoy usando más tarde
class GenericClass<T> where T : IFoo
{
T foo = new T();
T item = foo.Bar();
}
El problema con una interfaz genérica es que ahora necesita especificar T en cualquier lugar que utilice esta interfaz en el código, de modo que ha acoplado su interfaz al tipo subyacente. Las interfaces tienden a intentar hacer lo opuesto? –
@Andrey - Como dijo Adam, este es un olor de código serio. Mi respuesta hará lo que está buscando, pero no es una buena práctica. – GenericTypeTea
@GenericTypeTea, lo siento, debería haber aclarado que funcionaría :) –