programacion - no implementa el miembro abstracto heredado c#
¿Es posible hacer que una clase anónima herede otra clase? (3)
No puede extender un anónimo pero puede declarar que su método acepta un parámetro dinámico si realmente necesita que esto funcione.
Esta es una posibilidad remota, pero tengo una situación de codificación divertida en la que quiero poder crear clases anónimas sobre la marcha, y poder pasarlas como un parámetro a un método que espera una interfaz o subclase. En otras palabras, me gustaría poder hacer algo como esto:
public class MyBase { ... }
public void Foo(MyBase something)
{
...
}
...
var q = db.SomeTable.Select(t =>
new : MyBase // yeah, I know I can''t do this...
{
t.Field1,
t.Field2,
});
foreach (var item in q)
Foo(item);
¿Hay alguna otra forma de hacer esto que no sea usar una clase nombrada?
No. De la documentation :
Los tipos anónimos son tipos de clase que se derivan directamente de un objeto y que no se pueden convertir a ningún tipo, excepto un objeto.
Para resolver su problema, simplemente reemplace el tipo anónimo con una clase normal ...
No. Los tipos anónimos siempre se derivan implícitamente del object
y nunca implementan ninguna interfaz.
De la sección 7.6.10.6 de la especificación C # 5:
Un inicializador de objeto anónimo declara un tipo anónimo y devuelve una instancia de ese tipo. Un tipo anónimo es un tipo de clase sin nombre que se hereda directamente del
object
.
Entonces, si desea una clase base diferente o si desea implementar una interfaz, necesita un tipo con nombre.