Erro do Compilador CS0315
O tipo "valueType" não pode ser usado como parâmetro de tipo "T" no tipo genérico ou no método "TypeorMethod<T>". Não há conversão boxing de "valueType" para "referenceType".
Esse erro ocorre quando você restringe um tipo genérico a uma classe específica e tenta construir uma instância dessa classe usando um tipo de valor que não pode ser implicitamente demarcado nela.
- Uma solução é redefinir o struct como uma classe.
O seguinte exemplo gera o erro 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;
}
}
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: