В приведенном ниже примере я вставляю строку в конструктор, что нормально. Однако, когда я десериализую объект из двоичного форматера, я не думаю, что строка будет интернирована, поскольку конструктор должен быть вызван. Как я должен убедиться, что строка _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;
}
}