我正在.NET 4上启动一个新项目。我将要创建的所有库都将应用SecurityTransparentAttribute
。
现在,我在其中一个程序集中有一个不可变的结构,需要序列化。作为一个不可变对象,不会有任何属性的setter(就像System.DateTime
一样)。
如果我只是将结构标记为[Serializable]
,则不会序列化任何内容,因为属性是只读的。通常的处理方法是实现ISerializable
接口,并在GetObjectData
和特殊构造函数中处理它。
但在这种情况下,我的程序集将是安全透明的,而ISerializable.GetObjectData
就是SecurityCritical
,所以我不能用这种方式。
那么,我有什么选择呢?我真的很想拥有SecurityTransparent
的一切,因为我真的不需要任何关键的东西。除了这个。
感谢
如果使用BinaryFormatter
,它会序列化结构的字段,而不是其属性,即使字段是readonly
,它也能工作。因此,如果通过简单地序列化结构的字段来序列化结构是合适的,那么您就已经做好了准备。
我的第一个想法是,知道如何序列化自己,在结构中有太多的行为吗?
您可以为它创建一个类型转换器