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;
    }
}