类型 'Microsoft.Xna.Framework.Graphics.RasterizerState' 在大会 “Microsoft.Xna.Framework.Graphics, 版本= 4.0.0.0,文化=中立, PublicKeyToken = 842cf8be1de50553'是 没有标记为可序列化。
我试图序列化xna游戏工作室的各个部分。
不幸的是我不能直接序列化这个类。
有什么建议吗?
答案 0 :(得分:1)
这是一个常见的问题。我会问自己的第一个问题是为什么你试图序列化一个类型没有标记为可序列化的对象。该类型的作者是否因某种原因而将其拒之门外?将来是否有可能通过一些不可序列化的行为来扩展类型?
然后我脑子里有3个解决方案。不幸的是,你不能直接序列化对象。你能做的是:
创建一个包装器对象(标记为可序列化),其中包含您要序列化的所有属性,并将值从实际对象复制到包装器对象并返回。
扩展选项1:简单包装器对象的Instread,创建一个更动态的包装类,其中包含KeyValuePairs列表,您将propertyNames绑定到propertyValues并生成一些通用代码,这些代码可以根据现有内容填充此列表对象并根据这样的列表填充对象。
使用不安全的代码并自行进行序列化(固定对象,读取其内存并写入内存流)。 <<这种方法真的很不安全