序列化类时未标记为可序列化错误我使用这段代码使用BinaryFormatter序列化结构:privatevoidSerializeObject(stringfilename,SerializableStructureobjectToSerialize){Streamstream=File.Open(文件名,FileMode.Create);BinaryFormatterbFormatter=newBinaryFormatter();bFormatter.Serialize(stream,objectToSerialize);stream.Close();哪个objectToSerialize是我的结构,我调用这个函数:SerializableStructures=newSerializableStructure();s.NN=NN;s.SubNNs=SubNNs;s.inputs=输入;SerializeObject(Application.StartupPath+"\Save\"+txtSave.Text+".bin",s);哪个SerializableStructure以及NN的类型、SubNN和输入是可序列化的。(输入包含一些点、矩形和通用列表)。现在,当我运行我的代码时,出现此错误:程序集“MainProject”中的类型“MainProject.Main”、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null未标记为可序列化。为什么会出现此错误?Main是我的表单,这些变量在我的表单中。我已经使用MemoryStream和VB.NET成功序列化了NN类型,但我不知道为什么会出现此错误?这是我的结构的定义:SerializableStructure:[Serializable()]publicclassSerializableStructure{publicListinputs=newList();公共神经网络NN;公共神经网络[]子神经网络;}输入:[Serializable()]publicclassInputs{}publicstringYPath{get;放;}publicstringImagePath{得到;放;}publicstringCharName{得到;放;}publicstringCharBaseName{得到;放;}公共列表x{得到;放;}public列表y{get;放;}公共列表DotsX{得到;放;}publicListDotsY{get;放;}publicListGravityCenters{get;放;}publicListBounds{get;放;}publicoverridestringToString(){returnCharName;}publicInputs(stringxPath,stringyPath,stringimagePath,stringcharName,stringcharBaseName){XPath=xPath;Y路径=y路径;图片路径=图片路径;字符名=字符名;字符基名=字符基名;=新列表();y=新列表();重力中心s=新列表();边界=新列表();NN也是一个非常大的结构(!),这几乎意味着你有一个事件(或其他委托-可能是一个回调),它试图被序列化。将[NonSerialized]添加到任何事件备份字段。如果您使用的是类似字段的事件(最有可能的类型),则为:[field:NonSerialized]publiceventSomeDelegateTypeSomeEventName;或者:大多数其他序列化程序不查看事件/委托,并提供更好的版本兼容性。切换到XmlSerializer、JavaScriptSerializer、DataContractSerializer或protobuf-net(仅4个示例)也将通过不尝试以简单的方式解决此问题(您几乎从不打算将事件视为DTO的一部分)。问题是您正在尝试序列化从Form派生的类。Form类基本上是不可序列化的。它有很多与运行时相关的内部状态。这从一个明显的属性开始,比如Handle,一个总是不同的值。不太明显的是Size等属性,它取决于用户偏好,例如窗口标题的字体大小。结束受本地化约束的控件的所有文本、位置和大小。序列化的Form对象可以随时随地正确反序列化以创建表单的精确克隆的可能性为零。微软在编写代码时并没有做任何没有意识到的事情,他们只是从类声明中省略了[Serializable]属性。这就是你得到例外的原因。您必须放低目标并编写自己的类来捕获表单的状态。并赋予它属性。您需要编写一堆代码来在表单和控件属性与该类的对象之间来回映射。以上就是C#学习教程的全部内容:序列化一个类时,没有标记为可序列化。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
