Erro do compilador CS0460
As restrições para substituir e métodos de implementação de interface explícita são herdadas do método base, portanto, não podem ser especificadas diretamente
Quando um método genérico que faz parte de uma classe derivada substitui um método na classe base, você não pode especificar restrições no método substituído. O método override na classe derivada herda suas restrições do método na classe base.
O exemplo a seguir gera CS0460.
// CS0460.cs
// compile with: /target:library
class BaseClass
{
BaseClass() { }
}
interface I
{
void F1<T>() where T : BaseClass;
void F2<T>() where T : struct;
void F3<T>() where T : BaseClass;
}
class ExpImpl : I
{
void I.F1<T>() where T : BaseClass {} // CS0460
void I.F2<T>() where T : class {} // CS0460
}
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: