【发布时间】:2013-02-19 03:51:08
【问题描述】:
我正在为 3 个不同的加密类实现工厂模式。工厂将确定创建哪个类,然后从数据库中获取正确类的序列化实例并将其返回给请求者。
现在我正在序列化这些类以将它们存储在数据库中。我正在为名为@987654321@ 的 PGP 密码学课程编写一个。我可以从文件中创建类和键,但是当我尝试序列化它时,它说两个成员变量,它们是类 PgpPublicKey 和 PgpPrivateKey 的对象,不能序列化,因为它们没有无参数的构造函数.
public void createdBouncyFromFiles()
{
var bc = new BouncyCastle("C:\\TestFiles\\BouncyPublicKey.txt", "C:\\TestFiles\\BouncyPrivateKey.txt", "Password1");
var xmlSerializer = new XmlSerializer(bc.GetType());
var textWriter = new StringWriter();
xmlSerializer.Serialize(textWriter, bc);
var theSerializedClass = textWriter.ToString();
}
该类有两个成员变量存在问题。
public class BouncyCastle : ICryptographyProvider
{
public PgpPublicKey m_publicKey;
public PgpPrivateKey m_privateKey;
public string m_passPhrase;
// cut out the irelevant parts
这是公钥类。没有无参数的构造函数。
public class PgpPublicKey
{
public PgpPublicKey(PublicKeyAlgorithmTag algorithm, AsymmetricKeyParameter pubKey, DateTime time);
// cut other methods
}
【问题讨论】:
-
制作你自己的数据类来序列化,根据需要复制值
-
为什么不想只添加无参数构造函数?
标签: c# serialization bouncycastle