tengo el siguiente código # ensayo C:C#: ¿tipos genéricos que tienen un constructor?
class MyItem
{
MyItem(int a) {}
}
class MyContainer<T>
where T : MyItem, new()
{
public void CreateItem()
{
T oItem = new T(10);
}
}
Visual Studio no puede compilarlo, el error está en línea en la 'nueva' se utiliza:
'T': cannot provide arguments when creating an instance of a variable type
¿Es posible en C# para crear un objeto de tipo genérico con un constructor sin parámetros? No es problema hacerlo en plantillas C++, así que tengo mucha curiosidad de por qué no puedo hacer lo mismo en C#. ¿Tal vez se requiera algún 'dónde' adicional o la sintaxis es diferente?
Como recuerdo, la restricción 'new()' se traduce en una llamada 'Activator.CreateInstance()'. –