类型因为不公开所以不能序列化?我有一个没有正确序列化的公共课程。尝试时,抛出以下异常:数据协定类型“MyProject.MyClass”不可序列化,因为它不是公共的。将类型设置为public将修复此错误。或者,您可以将其设置为内部并使用程序集上的InternalsVisibleToAttribute属性来启用内部成员的序列化-有关详细信息,请参阅文档。请注意,这样做会产生某些安全风险。我的班级是公开的,但是:[DataContract]publicclassMyClass{[DataMember]publicstringName{get;放;}[DataMember]privateintCount;publicMyClass(){名称=string.Empty;计数=0;当类显然是公开的时,为什么我会得到这个异常?在WindowsPhone7应用程序中,您无法序列化私有成员:嗯,碰巧WP7应用程序在“部分信任”环境和“完全信任”之外运行-DataContractSerializer拒绝序列化或反序列化非公共成员。当然,异常被.NET内部吞没了,所以我所看到的只是关于我所知道的公开“不公开”的事物的奇怪信息。我将所有正在序列化为公共的私有字段更改为公共字段,一切正常。http://geekswithblogs.net/mikebmcl/archive/2010/12/29/datacontractserializer-type-is-not-serializable-because-it-is-not-public.aspx更改代码以避免序列化私有成员解决了问题.您可以通过为此类编写自定义序列化来解决此问题。内置的XML序列化只能序列化公共属性。您可以执行以下操作之一来解决此限制:以上是C#学习教程:typeisnotserializablebecauseitisnotpublic?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
