Csharp/C#教程:类型不可序列化,因为它不公开?分享


类型不可序列化,因为它不公开?

我有一个公共类,不能正确序列化。 尝试时,抛出以下exception:

数据协定类型“MyProject.MyClass”不可序列化,因为它不公开。 将类型设置为public将修复此错误。 或者,您可以将其设置为内部,并使用程序集上的InternalsVisibleToAttribute属性来启用内部成员的序列化 – 有关更多详细信息,请参阅文档。 请注意,这样做会产生一定的安全隐患。

我的class级公开的,但是:

[DataContract] public class MyClass { [DataMember] public string Name { get; set; } [DataMember] private int Count; public MyClass() { Name = string.Empty; Count = 0; } } 

当课程明显公开时,为什么我会得到这个例外?

在Windows Phone 7应用程序中,您无法序列化私有成员:

好吧,碰巧WP7应用程序在“部分信任”环境中运行并且在“完全信任”之外 – DataContractSerializer拒绝序列化或反序列化非公共成员。 当然,这个exception被.NET内部吞噬,所以我所看到的只是那些我所知道的事情的奇怪信息是公众“不公开”。 我将所有正在序列化的私有字段更改为public,一切正常。 https://geekswithblogs.net/mikebmcl/archive/2010/12/29/datacontractserializer-type-is-not-serializable-because-it-is-not-public.aspx

更改代码以避免序列化私有成员可以解决问题。

您可以通过为此类编写自定义序列化来解决此问题。 内置的XML序列化只能序列化公共属性。

您可以执行以下操作之一来解决此限制:

上述就是C#学习教程:类型不可序列化,因为它不公开?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1033517.html

(0)
上一篇 2022年1月18日
下一篇 2022年1月18日

精彩推荐