如何防止自動實現的屬性被二進制格式化程序序列化? [NonSerialized]屬性只能與字段一起使用。並且該字段在使用自動實現的屬性時隱藏。如何防止自動實現的屬性被序列化?
36
A
回答
59
它不支持自動實現的屬性。您必須使用後臺字段並將其設置爲NonSerializedAttribute。
public class ClassWithNonSerializedProperty {
[NonSerialized]
private object _data; // Backing field of Property Data that is not serialized
public object Data{
get { return _data; }
set { _data = value; }
}
}
4
如果您序列化爲Xml,那麼您可以使用XmlIgnore屬性。
4
我不確定你可以。這MSDN article on SerializableAttribute
建議您實現了ISerializable和控制系列化自己:
所有類型的公共和私有字段由SerializableAttribute標記默認序列化,除非該類型實現ISerializable接口來重寫序列化進程。
或者切換遠離該特定字段的自動屬性。
8
// This works for the underlying delegate of the `event` add/remove mechanism.
[field:NonSerialized]
public event EventHandler SomethingHappened;
但它似乎並沒有自動實現的屬性。我認爲這值得一提,因爲知道序列化一個附有事件訂閱者的對象是很有用的。
4
自動實現的屬性不可能。 考慮以下內容:
此行爲是「按設計」。在實現自動屬性時的決定是,它們將在「常見情況」下工作,除此之外,這意味着在生成的字段上沒有屬性。這背後的想法是保持簡單,不要慢慢將它們變爲完整的屬性。 所以,如果你需要使用NonSerialized屬性,完整的屬性就是這樣。
3
使用不序列化支持字段似乎不與.NET 4.0(至少在XML序列化的情況下)正常工作的建議的解決方案。該字段確實不會被序列化,但使用它的公共屬性會進行序列化,從而破壞目的。使用XmlIgnore解決方法有助於Xml序列化。免責聲明 - 我沒有驗證二進制序列化行爲。
6
如果您序列化爲Json並使用Json.NET serializer(我強烈建議,因爲它比市場上的許多其他序列化器提供的要多得多),那麼您可以使用屬性使用[JsonIgnore]
。
您不需要創建一個字段。
所以,你的代碼是:
public class ClassName
{
[JsonIgnore]
public object IgnoreMe { get; set; }
public object DoNotIgnoreMe { get; set; }
}
相關問題
- 1. 防止VB.NET中的屬性序列化
- 2. 防止標準屬性的序列化
- 3. 防止在api中序列化屬性
- 4. 自動實現的屬性和序列化
- 5. WCF Xml序列化和自動實現的屬性
- 6. 如何防止XamlWriter.Save序列化BaseUri屬性?
- 7. 如何防止MVC4 ApiController序列化實體框架導航屬性?
- 8. 自動實現的屬性
- 9. 序列化實現IEnumerable的類的自定義屬性
- 10. 防止XmlSerializer的從自動實例化列表對反序列化
- 11. 防止某些字段被序列化
- 12. 如何防止持久化對象被序列化?
- 13. 如何防止類圖中的屬性名被排序?
- 14. 屬性和自動實現
- 15. 防止序列化
- 16. 實體框架 - 如何防止創建列的模型屬性?
- 17. 防止服務棧中的屬性序列化RedisClient
- 18. 我應該在哪裏添加[JsonIgnore]來防止某些屬性被序列化?
- 19. 如何序列化屬性
- 20. 如何防止Jackson序列化多態類型的註釋屬性?
- 21. 如何防止數據存儲器被序列化
- 22. 如何防止整個類被序列化?
- 23. Json.NET:如何防止一類被序列化
- 24. 如何防止序列化類的變化系列化
- 25. 如何防止MappingJackson2XmlHttpMessageConverter接管序列化?
- 26. 使用自動實現的屬性或由我們自己實現屬性
- 27. 如何防止EF生成自動屬性
- 28. 如何防止Blend製作自動列
- 29. Rails /輪胎 - 防止屬性被索引
- 30. 什麼是自動實現的屬性
或者你可以使用[字段:非序列化]對房地產直接。 – profou 2017-10-11 07:50:49