En la mayoría de los casos quieres cambiar el valor de una variable y dejarla así pero en algunas ocasiones quieres cambiar el valor de la variable, hacer algo y ponerla como estaba.
Con este código es muy fácil y te aseguras de que no te vas a olvidar nunca.
La idea es crear una clase que implemente la interfaz IDisposable y guarde los valores en el estado en el que estaban cuando se creó y luego los ponga a lo que necesitemos. Después, en el Dispose, los cambiará otra vez a los valores iniciales:
- public class ManageAllowUnsafeUpdates : IDisposable
- {
- private readonly bool allowUnsafeUpdatesStatus;
- private readonly SPWeb Web;
- public ManageAllowUnsafeUpdates(SPWeb Web)
- {
- this.Web = Web;
- allowUnsafeUpdatesStatus = Web.AllowUnsafeUpdates;
- Web.AllowUnsafeUpdates = true;
- }
- public void Dispose()
- {
- Web.AllowUnsafeUpdates = allowUnsafeUpdatesStatus;
- }
- }
Usarlo es así de simple:
- using (new ManageAllowUnsafeUpdates(Web))
- {
- ListItem[this.FieldName] = (String)value;
- ListItem.Update();
- }
Y no te tienes que preocupar nunca más de si el valor estaba a true o false antes porque la clase se ocupará de todo por ti.
Este código es un poco tonto, pero creo que sirve bien para demostrar la idea.
No hay comentarios:
Publicar un comentario