Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Erros e avisos relacionados aos métodos de extensão declarados com
-
CS1100: o método tem um modificador de parâmetro '
this
' que não está no primeiro parâmetro -
CS1101: O modificador de parâmetro '
ref
' não pode ser usado com 'this
'. -
CS1102: O modificador de parâmetro '
out
' não pode ser usado com 'this
'. - CS1103: O primeiro parâmetro de um método de extensão não pode ser de um tipo de ponteiro.
- CS1105: os métodos de extensão devem ser estáticos.
- CS1106: os métodos de extensão devem ser definidos em uma classe estática não genérica.
- CS1109: Métodos de extensão devem ser definidos em classes estáticas de nível superior, 'name' é uma classe aninhada.
- CS1110: Não é possível definir uma nova extensão porque o tipo ExtensionAttribute necessário do compilador não pode ser encontrado. Você está perdendo uma referência a System.Core.dll?
-
CS1112: não use 'ExtensionAttribute'. Em vez disso, use a palavra-chave '
this
'. - CS1113: O método de extensão definido em um tipo de valor não pode ser usado para criar delegados.
- CS1743: Não é possível especificar um valor padrão para o parâmetro 'this'.
- CS9281: as declarações de extensão podem não ter um nome.
- CS9282: as declarações de extensão podem incluir apenas métodos ou propriedades.
- CS9283: as extensões devem ser declaradas em uma classe estática de nível superior, não genérica.
- CS9284: O parâmetro receptor de uma extensão não pode ter um valor padrão.
- CS9285: um contêiner de extensão pode ter apenas um parâmetro de receptor.
- CS9287: um parâmetro de receptor não pode ter o mesmo nome que um parâmetro de tipo de contêiner de extensão.
- CS9288: Um parâmetro, uma variável local ou uma função local não pode ter o mesmo nome que um parâmetro de tipo de contêiner de extensão.
- CS9289: o parâmetro de tipo de membro tem o mesmo nome de um parâmetro de tipo de contêiner de extensão.
- CS9290: um parâmetro, uma variável local ou uma função local não pode ter o mesmo nome que um parâmetro de extensão.
-
CS9291: '
value
': um nome de parâmetro gerado automaticamente entra em conflito com um nome de parâmetro de extensão. - CS9292: um parâmetro de tipo tem o mesmo nome de um parâmetro de extensão.
- CS9293: não é possível usar um parâmetro de extensão neste contexto.
-
CS9294: '
value
': um nome de parâmetro gerado automaticamente entra em conflito com um nome de parâmetro de tipo de extensão. - CS9295: O tipo estendido deve referenciar todos os parâmetros de tipo declarados pela extensão, mas um parâmetro de tipo não é referenciado.
-
CS9300: o parâmetro de receptor '
ref
' de um bloco de extensão deve ser um tipo de valor ou um tipo genérico restrito ao struct. -
CS9301: o parâmetro do receptor '
in
' ou 'ref readonly
' da extensão deve ser um tipo de valor concreto (não genérico). - CS9302: novo membro protegido declarado em um bloco de extensão.
- CS9303: Não é possível declarar membros da instância em um bloco de extensão com um parâmetro de receptor sem nome.
- CS9304: Não é possível declarar acessadores somente init em um bloco de extensão.
- CS9305: Não é possível usar modificadores no parâmetro receptor não nomeado do bloco de extensão.
Erros comuns em declarações de extensão
O compilador emite esses erros quando você viola regras que se aplicam a todas as declarações de membro de extensão, independentemente da sintaxe escolhida:
-
CS1102: O modificador de parâmetro '
out
' não pode ser usado com 'this
'. - CS1106: os métodos de extensão devem ser definidos em uma classe estática não genérica.
- CS1103: O primeiro parâmetro de um método de extensão não pode ser de um tipo de ponteiro.
- CS1109: Métodos de extensão devem ser definidos em classes estáticas de nível superior, 'name' é uma classe aninhada.
- CS1113: O método de extensão definido em um tipo de valor não pode ser usado para criar delegados.
- CS1743: Não é possível especificar um valor padrão para o parâmetro 'this'.
- CS9283: as extensões devem ser declaradas em uma classe estática de nível superior, não genérica.
- CS9284: O parâmetro receptor de uma extensão não pode ter um valor padrão.
- CS9285: um contêiner de extensão pode ter apenas um parâmetro de receptor.
Qualquer declaração de extensão deve seguir estas regras:
- Seu tipo de contenção (
class
oustruct
) deve ser não genérico estatic
. - Seu tipo de contenção deve ser um tipo de nível superior. Não pode ser aninhado em outro tipo.
- Membros que estendem uma instância de um tipo de valor não podem ser convertidos em delegados.
- O parâmetro receptor não pode incluir o
out
modificador de parâmetro. - O parâmetro receptor não pode ter um valor de argumento padrão.
- Os tipos de ponteiro não podem ser estendidos. Em outras palavras, o parâmetro ao qual você aplica o modificador
this
não pode ser do tipo ponteiro.
Erros relacionados a declarações de bloco de extensão
Esses erros são específicos para blocos de extensão, um recurso C# 14. Os blocos de extensão são declarados usando a extension
palavra-chave em uma classe estática. O extension
declara o tipo e o nome do receptor. Todos os membros dentro do bloco declarado com extension
são membros de extensão para esse receptor:
- CS9281: as declarações de extensão podem não ter um nome.
- CS9282: as declarações de extensão podem incluir apenas métodos ou propriedades.
- CS9287: um parâmetro de receptor não pode ter o mesmo nome que um parâmetro de tipo de contêiner de extensão.
- CS9288: Um parâmetro, uma variável local ou uma função local não pode ter o mesmo nome que um parâmetro de tipo de contêiner de extensão.
- CS9289: o parâmetro de tipo de membro tem o mesmo nome de um parâmetro de tipo de contêiner de extensão.
- CS9290: um parâmetro, uma variável local ou uma função local não pode ter o mesmo nome que um parâmetro de extensão.
-
CS9291: '
value
': um nome de parâmetro gerado automaticamente entra em conflito com um nome de parâmetro de extensão. - CS9292: um parâmetro de tipo tem o mesmo nome de um parâmetro de extensão.
- CS9293: não é possível usar um parâmetro de extensão neste contexto.
-
CS9294: '
value
': um nome de parâmetro gerado automaticamente entra em conflito com um nome de parâmetro de tipo de extensão. - CS9295: O tipo estendido deve referenciar todos os parâmetros de tipo declarados pela extensão, mas um parâmetro de tipo não é referenciado.
-
CS9300: o parâmetro de receptor '
ref
' de um bloco de extensão deve ser um tipo de valor ou um tipo genérico restrito ao struct. -
CS9301: O parâmetro receptor '
in
' ou 'ref readonly
' da extensão deve ser um tipo de valor concreto (não genérico). - CS9302: novo membro protegido declarado em um bloco de extensão.
- CS9303: Não é possível declarar membros da instância em um bloco de extensão com um parâmetro de receptor sem nome.
- CS9304: Não é possível declarar acessadores somente para inicialização em um bloco de extensão.
- CS9305: Não é possível usar modificadores no parâmetro receptor não nomeado do bloco de extensão.
As declarações de extensão devem seguir estas regras:
- A extensão não pode incluir um token de nome. A extensão declara apenas o receptor.
- O parâmetro receptor não pode ter um valor padrão.
Os membros de extensão declarados em um bloco de extensão devem seguir estas regras, além das regras comuns:
- Somente métodos e propriedades são tipos de membro de extensão válidos. Os membros da extensão podem estender uma instância ou um tipo.
- A extensão deve especificar um nome de parâmetro para o receptor, a fim de conter membros que estendam uma instância.
- O nome do parâmetro do receptor deve ser exclusivo nesse bloco de extensão.
- Todos os membros da extensão devem usar todos os parâmetros de tipo declarados na extensão. Eles podem adicionar mais parâmetros de tipo.
Erros relacionados aos this
métodos de extensão de parâmetro
Esses erros são específicos aos métodos de extensão em que você declara o receptor adicionando o this
modificador ao primeiro parâmetro do método:
-
CS1100: o método tem um modificador de parâmetro '
this
' que não está no primeiro parâmetro -
CS1101: O modificador de parâmetro '
ref
' não pode ser usado com 'this
'. - CS1105: os métodos de extensão devem ser estáticos.
- CS1110: Não é possível definir uma nova extensão porque o tipo ExtensionAttribute necessário do compilador não pode ser encontrado. Você está perdendo uma referência a System.Core.dll?
-
CS1112: não use 'ExtensionAttribute'. Em vez disso, use a palavra-chave '
this
'.
Um método de extensão em que a instância do receptor inclui o this
modificador deve seguir estas regras, além das regras comuns:
- O método deve ter o
static
modificador. - O
this
modificador de parâmetro deve ser aplicado ao primeiro parâmetro. Ele não pode ser aplicado a nenhum outro parâmetro no método. - O
ref
out
modificador de parâmetro não pode ser aplicado ao primeiro parâmetro. Para aplicarref
, você precisa converter para um bloco de extensão. - Em aplicativos do .NET Framework,
System.Core.dll
deve ser adicionado como referência. - Você deve especificar o
this
modificador no primeiro parâmetro. Em vez disso, não é possível usar diretamente o ExtensionAttribute atributo.