CS0315 de erro do compilador

Mensagem de erro

O tipo 'valueType' não pode ser usado sistema autônomo parâmetro de tipo ' t ' no tipo genérico ou método 'TypeorMethod <t>'.Não há nenhuma conversão boxing de 'valueType' para 'referenceType'.

Este erro ocorre quando você restringir um tipo genérico a uma determinada classe e tentar construir uma instância dessa classe usando um tipo de valor implicitamente ser in a box não é possível a ele.

Para corrigir este erro

  • Uma solução é redefinir a estrutura sistema autônomo uma classe.

Exemplo

O exemplo a seguir gera CS0315:

// cs0315.cs
public class ClassConstraint { }
public struct ViolateClassConstraint { }

public class Gen<T> where T : ClassConstraint
{       
}
public class Test
{
    public static int Main()
    {
        Gen<ViolateClassConstraint> g = new Gen<ViolateClassConstraint>(); //CS0315
        return 1;
    }
}

Consulte também

Referência

Restrições em parâmetros de tipo (Guia de programação C#)

Boxing e unboxing (C# Guia de programação)