Erro do Compilador CS0310

'typename' deve ser um tipo não abstrato com um construtor público sem-parâmetros para que possa ser usado como parâmetro 'parâmetro' no tipo ou método genérico 'genérico'

O tipo ou método genérico define a new()restrição em sua cláusula where, portanto, qualquer tipo deve ter um construtor público sem parâmetros para ser usado como um argumento de tipo para esse tipo ou método genérico. Para evitar esse erro, verifique se o tipo tem o construtor correto ou modifique a cláusula de restrição do tipo genérico ou método.

Exemplo

O exemplo a seguir gera o erro CS0310:

// CS0310.cs  
using System;  
  
class G<T> where T : new()  
{  
    T t;  
  
    public G()  
    {  
        t = new T();  
        Console.WriteLine(t);  
    }  
}  
  
class B  
{  
    private B() { }  
    // Try this instead:  
    // public B() { }  
}  
  
class CMain  
{  
    public static void Main()  
    {  
        G<B> g = new G<B>();   // CS0310  
        Console.WriteLine(g.ToString());  
    }  
}