Partilhar via


Membro ' <classname>. <procedurename>' que corresponde a essa assinatura não é possível substituir porque a classe '<classname>' contém vários membros com o mesmo nome e assinatura: <signaturelist>

Um procedimento ou uma propriedade tentam substituir um procedimento ou propriedade herdados, mas o compilador encontra mais de uma versão do procedimento ou propriedade base com o mesmo nome e assinatura.

Esse erro pode ocorrer em uma situação com tipos genéricos construídos, como os seguintes esqueletos de declarações ilustram.

Public Class baseClass(Of t)
    Public Overridable Sub doSomething(ByVal inputValue As String)
    End Sub
    Public Overridable Sub doSomething(ByVal inputValue As t)
    End Sub
End Class
Public Class derivedClass
    Inherits baseClass(Of String)
    Overrides Sub doSomething(ByVal inputValue As String)
    End Sub
End Class

Como derivedClass herda baseClass fornecendo String para seus parâmetros de tipo t, as duas versões do doSomething em baseClass assumem assinaturas idênticas, até onde derivedClass diz respeito.Como resultado, o compilador não pode determinar a versão que deseja substituir.

ID de erro: BC30935

Para corrigir este erro

  • Altere o argumento (ou argumentos) de tipo que você fornece para a classe base para que ele não resulte em uma ou mais assinaturas idênticas de procedimentos ou propriedades membros.

    - ou -

  • Se você precisar herdar a classe base com o conjunto de argumentos de tipo que você está usando, então não substitua o procedimento ou a propriedade citados neste mensagem de erro.

Consulte também

Conceitos

Sobrescrevendo propriedades e métodos

Referência

Overridable

Substitui