Tôi đang triển khai mẫu nhà máy cho 3 lớp mã hóa khác nhau. Nhà máy sẽ quyết định cái nào cần tạo và sau đó lấy một thể hiện tuần tự của lớp chính xác từ một cơ sở dữ liệu và trả về cho người yêu cầu. Ngay bây giờ tôi đang làm việc trên serializing các lớp học để lưu trữ chúng trong cơ sở dữ liệu. Tôi đang viết một cho lớp mã hóa PGP có tên là BouncyCastle
. Tôi có thể tạo lớp và các khóa từ các tệp nhưng khi tôi cố gắng tuần tự hóa nó, nó nói rằng hai biến thành viên, là đối tượng của lớp PgpPublicKey
và PgpPrivateKey
, không thể được tuần tự hóa vì chúng không có các hàm tạo tham số.C# tuần tự hóa một lớp không có một hàm tạo tham số
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();
}
Lớp học có hai biến thành viên là vấn đề.
public class BouncyCastle : ICryptographyProvider
{
public PgpPublicKey m_publicKey;
public PgpPrivateKey m_privateKey;
public string m_passPhrase;
// cut out the irelevant parts
Đây là lớp khóa công khai. Không có hàm tạo tham số.
public class PgpPublicKey
{
public PgpPublicKey(PublicKeyAlgorithmTag algorithm, AsymmetricKeyParameter pubKey, DateTime time);
// cut other methods
}
Tạo lớp dữ liệu của riêng bạn để tuần tự hóa, sao chép các giá trị xung quanh khi cần thiết –
Tại sao bạn không muốn chỉ thêm các hàm tạo tham số? – Restuta