This question可能与我的很相似,但我看不到我需要的答案。我有一个班,名为CASM
,有一个List<Action>
。我想序列化这个类(使用BinaryFormatter
或类似的东西)。此类和Action
中引用的所有类都具有正确的[Serializable]
和[NonSerializable]
属性。序列化匿名代表名单
问题是当序列化尝试 - 它给出了这样的错误:
Type 'CASM.CASM+<>c__DisplayClass2c' in Assembly 'CASM, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null' is not marked as serializable.
这<>c__DisplayClass2c
是保存不同类型的匿名委托的我用我的应用程序自动生成的内部类。然而,正如我们可以从下面的图片看到,这是不是[Serializable]
:
alt text http://bayimg.com/image/maebbaacj.jpg
什么会改变我的应用程序,这样做的工作的最好方法?让我自己的<>c__DisplayClass2c
类型的类,并使其可串行化?或者,还有更好的方法?
编辑:最后我只是做我自己的类,而不是自动生成一个。我帮助调试,实际上有一个描述性名称,而不仅仅是b__12()
。
你说这个班是自动生成的 - 它是如何完成的?控制它吗?它是由第三方组件生成的吗? – 2009-10-24 17:24:51
它由编译器自动生成 - 它具有[CompilerGenerated]属性。我认为这只是一个类/地方来存储一些非常相似的匿名代理(在这种情况下,它们都是无效的并接受一个字符串[]作为参数)。 – 2009-10-24 17:27:21
然后是的,尝试创建自己的班级。你也可能有一个匿名方法的问题(我没有尝试过,所以我不知道),在这种情况下,尝试非匿名版本。如果即使这样也行不通,你可以尝试先将这些方法转换为表达式(这些_should_可序列化) – 2009-10-24 17:30:25