编译器警告(等级 1)CS1690
访问“member”上的成员会导致运行时异常,因为它是引用封送类的字段
尝试调用派生自 MarshalByRefObject 的类的成员上的方法、属性或索引器且成员是值类型时,会出现此警告。 在应用程序域中,继承自 MarshalByRefObject
的对象通常打算以引用方式封送。 如果任何代码曾尝试在应用程序域中直接访问此类对象的值类型成员,会发生运行时 InvalidOperationException。 要解决此警告,首先将该成员复制到本地变量中,然后在该变量上调用方法。
下面的示例生成 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;
}
}
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈