CS0406 de erro do compilador

Mensagem de erro

A restrição de tipo de classe 'restrição' deve vir antes de qualquer Outros restrição

Quando um tipo genérico ou método tem uma restrição de tipo de classe, essa restrição deve ser listada primeiro.Para evitar esse erro, mova a restrição de tipo de classe para o início da lista de restrição.

Exemplo

O exemplo a seguir gera CS0406.

// CS0406.cs
// compile with: /target:library
interface I {}
class C {}
class D<T> where T : I, C {}   // CS0406
class D2<T> where T : C, I {}   // OK