我的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>
答案 0 :(得分:1)
首先,XML Serializer忽略[Serializable]
属性。
其次,如果该类没有默认构造函数,则无法使用XML Serializer句点序列化它。
你想要完成什么?也许你可以使用Data Contract Serializer完成同样的事情?
创建一个只包含模数和指数的类。从RSAKeyValue填写该类。序列化您的自定义类。反序列化后,使用它来创建一个新的RSAKeyValue。