Freigeben über


Compilerwarnung (Stufe 1) CS1690

Der Zugriff auf einen Member auf „member“ kann eine Laufzeitausnahme verursachen, da er ein Feld einer Marshal-by-Reference-Klasse ist.

Diese Warnung wird angezeigt, wenn Sie versuchen, eine Methode, eine Eigenschaft oder einen Indexer für einen Member einer Klasse aufzurufen, die von MarshalByRefObject abgeleitet wird, und es sich um einen Werttypmember handelt. Objekte, die von MarshalByRefObject erben, werden in der Regel als Verweis über eine Anwendungsdomäne gemarshallt. Beim Versuch, mit Code direkt auf den Werttypmember eines solchen Objekts über eine Anwendungsdomäne zuzugreifen, wird eine Laufzeit-InvalidOperationException ausgelöst. Um diese Warnung zu vermeiden, kopieren Sie den Member in eine lokale Variable, und rufen Sie die Methode für diese Variable auf.

Im folgenden Beispiel wird der Fehler CS1690 generiert:

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