En el siguiente ejemplo, estoy intercediendo la cadena en el constructor, lo cual está bien. Sin embargo, cuando deserializo el objeto del formateador binario, no creo que la cadena se interne, ya que se debe invocar al constructor. ¿Cómo debo asegurarme de que la cadena _name esté interna? ... o será internado ¿de acuerdo?¿Cómo debo manejar cadenas Interning en deserialización?
Edit: Así que parece que funciona (interns las cadenas correctamente) sin manejar el OnDeserializedAttribute. ¿Como hace eso?
Estoy usando un generador de perfiles de memoria, con o sin el método que se muestra a continuación, todavía interne las cadenas? ¿Magia? : -/
[OnDeserializedAttribute]
private void OnDeserialized(StreamingContext context)
{
_name = string.Intern(_name);
}
Gracias
[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;
}
}
¿por qué explícitamente Intern string? Este es el mecanismo interno de .net. – Andrey