好的,我可能在这里遇到了一次史诗般的失败,但是我的脑海想说这应该可行。

假定DataProtect.DecryptData将加密的字符串作为输入,将解密的字符串作为输出。假定deserializeXML创建适当的对象,然后从新解密的字符串返回它。

所以。为什么不起作用?

class ArrivedDetails
{
///...

    internal ArrivedDetails(string encrypted)
    {
        this = DataProtect.deserializeXML(DataProtect.DecryptData(encrypted));
    }
///...

给我一个错误
Cannot assign to '<this>' because it's read only

更具体地说,如何使它正常工作?我本质上想解密该对象的XML序列化版本,然后在构造函数中反序列化它。

我对“您不能”(带有解释)持开放态度,因为我可以将其放在其他位置并仅分配值,但是我的想法是这样的。

最佳答案

不,使用构造函数无法实现,您无法重新分配this

改用静态方法:

public static ArrivedDetails CreateFromString(string encrypted)
{
    return DataProtect.deserializeXML(DataProtect.DecryptData(encrypted));
}

叫它:
ArrivedDetails details = ArrivedDetails.CreateFromString(encrypted);

关于c# - 反序列化到自己,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5398904/

10-12 15:57