Kompilatorvarning (nivå 1) CS1690

Åtkomst till en medlem på "medlem" kan orsaka ett körningsundundatag eftersom det är ett fält i en marshal-by-reference-klass

Den här varningen inträffar när du försöker anropa en metod, egenskap eller indexerare för en medlem i en klass som härleds från MarshalByRefObject, och medlemmen är en värdetyp. Objekt som ärver från MarshalByRefObject är vanligtvis avsedda att ordnas med referens över en programdomän. Om någon kod någonsin försöker få direkt åtkomst till värdetypsmedlemmen för ett sådant objekt i en programdomän, sker en körning InvalidOperationException . Lös varningen genom att först kopiera medlemmen till en lokal variabel och anropa metoden för variabeln.

Följande exempel genererar 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;
    }
}