我正在开始一个关于.NET 4的新项目。我将创建的所有库都将SecurityTransparentAttribute
应用。
现在我在其中一个需要序列化的程序集中有一个不可变的结构。作为不可变对象,不会有任何属性的设置器(例如System.DateTime
)。
如果我只是将结构标记为[Serializable]
,则不会将任何内容序列化,因为属性是只读的。解决这个问题的常用方法是实现ISerializable
接口,并在GetObjectData
和特殊构造函数中处理它。
但在这种情况下,我的程序集将是安全透明的,而ISerializable.GetObjectData
是SecurityCritical
,所以我不能这样做。
那么,我的选择是什么?我真的想拥有一切SecurityTransparent
因为我不需要任何关键的东西。除此之外。
由于
答案 0 :(得分:1)
如果您正在使用BinaryFormatter
,则会对结构的字段进行序列化,而不是其属性,即使字段为readonly
,它也能正常工作。因此,如果通过简单地序列化其字段来序列化您的结构是合适的,那么您已完全设置。
答案 1 :(得分:0)
我的第一个想法是,知道如何在结构中序列化自己过多的行为?
您可以沿着为其创建type converter的路线