estoy tratando de hacer lo siguiente:¿Por qué no puedo aplicar clases derivadas para tener constructores sin parámetros?
class Program
{
static void Main(string[] args)
{
foo<baz> fooObject = new foo<baz>();
AnotherClass<baz> _baz = new AnotherClass<baz>();
_baz.testMethod(fooObject);
}
}
public class AnotherClass<T> where T : bar
{
public void testMethod(foo<T> dummy)
{
foobar = dummy;
}
private foo<T> foobar = null;
}
public class foo<T> where T : bar, new()
{
public foo()
{
_t = new T();
}
private T _t;
}
public abstract class bar
{
public abstract void someMethod();
// Some implementation
}
public class baz : bar
{
public override void someMethod()
{
//Implementation
}
}
y me sale un error explicando que 'T' debe ser un tipo no abstracta con un constructor sin parámetros pública con el fin de utilizarlo como parámetro de 'T' en el tipo o método genérico Entiendo completamente por qué esto debe ser así, y también entiendo que podría pasar un objeto preinicializado de tipo 'T' como un argumento constructor para evitar tener que 'nuevo', pero ¿hay alguna forma de evitar esto? ¿Hay alguna forma de aplicar clases que se derivan de 'barra' para suministrar constructores sin parámetros?
Corregido - Me faltaba una 'nueva()' restricción en AnotherClass().
¡Gracias, parece que lo arregló! –