为什么我需要"的领域:"在我的特性声明"[域:非序列化]"?
-
19-09-2019 - |
题
我找不到"领域"列为C#关键字的任何地方。任何人都不会知道的背景吗?
解决方案
C#编译器通常没有麻烦找出什么的一部分,《宣言》的属性适用。我能想到的三种情况下,你可能会使用:
- 属性的,适用于大会。非常可见在程序集信息.cs
- 一个属性应用于返回值P/援引《宣言》,[返回:MarshalAs]
- 具有的特性适用于背变量的财产或事件没有访问器。你的情况。
其他提示
这是必要的,例如,如果要标记的事件作为不可序列。它指定该属性适用于该目标。
有属性目标语法的一部分。从规范:
attribute-target:
field
event
method
param
property
return
type
参见文档 NonSerializedAttribute
:
要的
NonSerializedAttribute
类适用于一个事件,设置属性位置字段,如图下面的C#代码。
[field:NonSerializedAttribute()]
public event ChangedEventHandler Changed;
这意味着允许您设置字段属性非序列化,这是序列化的事件是有用的。
例如,这会给你一个编译错误
[NonSerialized]
public event SomeEventHandler SomeEvent;
要解决这个问题,你必须使用field:
[field:NonSerialized]
public event SomeEventHandler SomeEvent;
更多内容在这里 - 代表和序列化
在NonSerializedAttribute只适用于字段,可以如下使用它:
[NonSerialized]
public string myString;
不隶属于 StackOverflow