Compartilhar via


CA1420: propriedade, tipo ou atributo requer marshaling em tempo de execução

Propriedade Valor
ID da regra CA1420
Título A propriedade, o tipo ou o atributo requerem serialização em tempo de execução
Categoria Interoperabilidade
Correção interruptiva ou sem interrupção Interrupção
Habilitado por padrão no .NET 10 Como aviso
Idiomas aplicáveis C# e Visual Basic

Causa

Um recurso de código é utilizado que requer marshaling em tempo de execução, e o marshaling em tempo de execução está explicitamente desabilitado.

Descrição da regra

O uso de recursos que exigem marshalling em tempo de execução quando o marshalling em tempo de execução está desativado resultará em exceções em tempo de execução.

Como corrigir violações

Habilite o marshaling de runtime ou remova o código que requer marshaling de runtime.

Quando suprimir avisos

Não suprima um aviso nessa regra.

Exemplo

O seguinte snippet de código mostra uma violação de CA1420:

using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

[assembly: DisableRuntimeMarshalling]

class C
{
    // Violates rule CA1420.
    [DllImport("NativeLibrary", SetLastError = true)]
    public static extern void MyMethod();
}
Imports System.Runtime.InteropServices
Imports System.Runtime.CompilerServices

<Assembly: DisableRuntimeMarshalling>

Class C
    ' Violates rule CA1420.
    <DllImport("NativeLibrary", SetLastError:=True)>
    Public Shared Sub MyMethod()
        '...
    End Sub
End Class

Para corrigir a violação, remova o DisableRuntimeMarshallingAttribute na montagem.