Aviso do compilador (nível 1) CS1690
O acesso a um membro em 'membro' pode gerar uma exceção em runtime por ele ser um campo de uma classe de marshaling por referência
Este aviso ocorre quando você tentar chamar um método, uma propriedade ou um indexador em um membro de uma classe que deriva de MarshalByRefObject e o membro é um tipo de valor. Os objetos que herdam de MarshalByRefObject
geralmente são destinados a realizar marshaling por referência em um domínio de aplicativo. Se algum código tentar acessar diretamente o membro de tipo de valor desse tipo de objeto em um domínio de aplicativo, ocorrerá uma exceção em runtime InvalidOperationException. Para resolver o aviso, primeiro copie o membro para uma variável local e chame o método nessa variável.
O exemplo a seguir gera o erro CS1690:
// CS1690.cs
using System;
class WarningCS1690 : MarshalByRefObject
{
int i = 5;
public static void Main()
{
AppDomain domain = AppDomain.CreateDomain("MyDomain");
Type t = typeof(WarningCS1690);
WarningCS1690 e = (WarningCS1690)domain.CreateInstanceAndUnwrap(t.Assembly.FullName,t.FullName);
e.i.ToString(); // CS1690
// OK
int i = e.i;
i.ToString();
e.i = i;
}
}
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de