CS0454 de erro do compilador

Mensagem de erro

Dependência de restrição circular envolvendo 'Tipo de parâmetro 1' e 'Parâmetro de tipo 2'

Este erro surge porque em algum momento um parâmetro de tipo refere-se para outro, e a segunda faz referência ao primeiro.Para corrigir este erro, quebra de dependência circular ao remover uma das restrições.Observe que a dependência de restrição circular pode ser indireta.

Exemplo

O código a seguir gera erro CS0454.

// CS0554
using System;
public class GenericsErrors 
{
    public class G4<T> where T : T { } // CS0454
}

O exemplo a seguir demonstra uma dependência circular entre duas restrições de tipo.

public class Gen<T,U> where T : U where U : T  // CS0454
{
}