序列化Serializable类中的RSAKeyValue属性

时间:2010-07-20 18:29:49

标签: c# xml-serialization cryptography rsa

我的C#项目中有一个标有[Serializable]属性的类。它具有RSAKeyValue类型的属性:

[XmlElement(PUBLIC_KEY_TAG_NAME)]
public RSAKeyValue Key { get; private set; }

当我尝试将我的类的实例序列化为XML然后将该XML反序列化为我的类的实例时,我得到:

  

System.InvalidOperationException:System.Security.Cryptography.KeySizes无法序列化,因为它没有无参数构造函数。

当我拨打XmlSerializer.Serialize时会发生这种情况。我确定这是因为我的类中的RSAKeyValue属性,因为序列化的所有其他属性都是简单的字符串。我该怎么办?我是否可以围绕正确序列化/反序列化的RSAKeyValue实例创建自己的包装类?

以下是一些可以反序列化为RSAKeyValue实例的示例XML:

<RSAKeyValue>
  <Modulus>long string here...</Modulus>
  <Exponent>short string here</Exponent>
</RSAKeyValue>

1 个答案:

答案 0 :(得分:1)

首先,XML Serializer忽略[Serializable]属性。

其次,如果该类没有默认构造函数,则无法使用XML Serializer句点序列化它。

你想要完成什么?也许你可以使用Data Contract Serializer完成同样的事情?


创建一个只包含模数和指数的类。从RSAKeyValue填写该类。序列化您的自定义类。反序列化后,使用它来创建一个新的RSAKeyValue。