5

在下面的示例中,我将字符串实习在构造函数中,这很好。但是,当我从二进制格式化程序中反序列化对象时,我认为字符串不会被实习,因为应该调用构造函数。我应该如何确保 _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;
    }
}
4

2 回答 2

2

如果您实现ISerializable接口(而不是属性),这是可能的。它会让你进行反序列化。

但这似乎非常不必要。你确定你正在用这个完成任何事情吗?

于 2010-06-03T11:59:53.893 回答
0

看看OnDeserializedAttribute

于 2010-06-03T12:00:51.847 回答