我爲3個不同的密碼類實現了一個工廠模式。工廠將決定創建哪一個,然後從數據庫中獲取正確類的序列化實例並將其返回給請求者。 現在,我正在對這些類進行序列化,以將它們存儲在數據庫中。我正在爲一個名爲BouncyCastle
的PGP密碼類編寫一個。我可以從文件創建類和關鍵字,但是當我嘗試序列化它時,它說,類PgpPublicKey
和PgpPrivateKey
的對象的兩個成員變量無法序列化,因爲它們沒有無參數構造函數。C#序列化一個沒有無參數構造函數的類
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
}
製作您自己的數據類以進行序列化,根據需要複製值 – 2013-03-04 22:09:30
爲什麼您不想只添加無參數構造函數? – Restuta 2013-03-04 22:09:47