我应该如何在反序列化时处理字符串实习?

时间:2010-06-03 11:56:30

标签: c# string-interning

在下面的例子中,我在构造函数中实现字符串,这很好。但是当我从二进制格式化程序反序列化对象时,我不认为该字符串将被实现,因为应该调用构造函数。我应该如何确保_name字符串被实现? ......还是会被实习?

编辑:所以它似乎工作(正确实习字符串)而不处理OnDeserializedAttribute。它是如何做到的?

我正在使用内存分析器,无论有没有下面的方法,它仍然可以实现字符串?魔法? : - /

   [OnDeserializedAttribute]
   private void OnDeserialized(StreamingContext context)
   {
       _name = string.Intern(_name);
   }

由于

[Serializable]
class City
{
    private readonly string _name;

    public City(string t)
    {
        _name = string.Intern(t);
    }

    public string Name
    {
        get { return _name; }
    }

    public override string ToString()
    {
        return _name;
    }
}

2 个答案:

答案 0 :(得分:2)

如果您实现ISerializable接口(而不是属性),则可以执行此操作。它会让你进行反序列化。

但似乎没必要。你确定你完成了这件事吗?

答案 1 :(得分:0)