Compiler Warning (level 1) CS1690

由于“member”是引用封送类的字段,访问上面的成员可能导致运行时异常

当您尝试对从 MarshalByRefObject 派生的类成员调用方法、属性或索引器时,并且该成员是值类型时,会出现此警告。从 MarshalByRefObject 继承的对象通常应由跨应用程序域的引用进行封送。如果任何代码曾经尝试跨应用程序域直接访问的此类对象的值类型成员,则会发生运行时异常。若要解决此警告,请先将该成员复制到局部变量并对该变量调用方法。

下面的示例生成 CS1690:

// CS1690.cs
using System;

class WarningCS1690: MarshalByRefObject
{
   int i = 5;

   public static void Main() 
   {
     WarningCS1690 e = new WarningCS1690();
     e.i.ToString();   // CS1690

     // OK
     int i = e.i;
     i.ToString();
     e.i = i;
   }
}