正在序列化SecurityTransparent程序集中的不可变结构

本文关键字:集中 不可变 结构 程序集 程序 序列化 SecurityTransparent | 更新日期: 2023-09-27 18:22:48

我正在.NET 4上启动一个新项目。我将要创建的所有库都将应用SecurityTransparentAttribute

现在,我在其中一个程序集中有一个不可变的结构,需要序列化。作为一个不可变对象,不会有任何属性的setter(就像System.DateTime一样)。

如果我只是将结构标记为[Serializable],则不会序列化任何内容,因为属性是只读的。通常的处理方法是实现ISerializable接口,并在GetObjectData和特殊构造函数中处理它。

但在这种情况下,我的程序集将是安全透明的,而ISerializable.GetObjectData就是SecurityCritical,所以我不能用这种方式。

那么,我有什么选择呢?我真的很想拥有SecurityTransparent的一切,因为我真的不需要任何关键的东西。除了这个。

感谢

正在序列化SecurityTransparent程序集中的不可变结构

如果使用BinaryFormatter,它会序列化结构的字段,而不是其属性,即使字段是readonly,它也能工作。因此,如果通过简单地序列化结构的字段来序列化结构是合适的,那么您就已经做好了准备。

我的第一个想法是,知道如何序列化自己,在结构中有太多的行为吗?

您可以为它创建一个类型转换器