Fordító figyelmeztetés (1. szint) CS1690

Egy tag elérése "tag" esetén futásidejű kivételt okozhat, mert az egy marshal-by-reference osztály mezője

Ez a figyelmeztetés akkor fordul elő, ha metódust, tulajdonságot vagy indexelőt próbál meghívni egy olyan osztály egy tagján, amelyből származik MarshalByRefObject, és a tag egy értéktípus. Az öröklődő MarshalByRefObject objektumokat általában egy alkalmazástartományra való hivatkozással kell elrendezni. Ha bármilyen kód megpróbál közvetlenül hozzáférni egy ilyen objektum értéktípusú tagjához egy alkalmazástartományon keresztül, futásidőben InvalidOperationException történik. A figyelmeztetés feloldásához másolja a tagot egy helyi változóba, és hívja meg a metódust a változón.

Az alábbi minta a CS1690-et hozza létre:

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