CS0460 de erro do compilador

Mensagem de erro

As restrições para substituem e métodos de implementação explícita da interface são herdados do método base, portanto, não pode ser especificados diretamente

Quando um método genérico que faz parte de uma classe derivada substitui um método na classe base, não é possível especificar restrições sobre o método substituído.O método na classe derivada de substituir herda suas próprias restrições do método na classe base.

Exemplo

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
}