Hace un par de días comenté el efecto de ejecución doble de ItemCreated que se podía dar al enlazar ciertos DataGrids en una página Web. Una forma posible e evitarlo (entre otras muchas) sería redefinir el evento LoadViewState de la página para marcar con un indicador booleano cuándo se está ejecutando, una cosa así:
private boolean RestaurandoViewState = false;protected override void LoadViewState(object savedState) { this.RestaurandoViewState = true; base.LoadViewState(savedState); this.RestaurandoViewState = false;}
De este modo durante el evento ItemCreated sólo tenemos que comprobar si se está restaurando el ViewState o no, ejecutando el código sólo en caso de que no.
Hoy he leído este truco de Enrico Sabbadin en la página de .NET2TheMax y me ha parecido muy interesante...
Se trata de ejecutar una aplicación (o parte de ella) dentro de un dominio restringido de forma que se ejecute con bajos privilegios de seguridad (lo que se suele llamar un patio de juegos o sandbox). Esto puede ser interesante en diversas situaciones.
La técnica consiste, grosso modo, en crear un nuevo dominio de aplicaicón (AppDomain) y asignarle una política de seguridad que se carga desde un archivo en disco. Posteriormente se carga el ensamblado a ejecutar con bajo privilegio mediante una llamada a ExecuteAssembly. Interesante....
Esta estupenda utilidad en-línea de Alex Lowe puede resultar muy útil a muchos programadores. Se trata de un traductor que convierte de forma automática código escrito en C# a código VB.NET. No hace falta instalar nada para usarlo, sólo hay que conectarse a Internet, pegar el código en C# en un área de texto y pulsar un botón. ¡Ya está!.
Como bien pone el autor en su página, la traducción no es perfecta. Eso sí, el resultado es muy bueno. Yo lo he probado traduciendo código bastante largo y complejo en C#. Aunque el resultado en VB no compilaba a la primera, no se trataba de nada que no se pudiera arreglar con un buen Option Strict Off y cuatro ajustes manuales.
Sólo traduce código C# puro (no admite etiquetas HTML por el medio si copiamos de una aplicación Web).
Dan Wahlin ha escrito una interfaz para poder usar la herramienta a través de un servicio Web. En la propia página hay un enlace a esta información.
Puedes encontrarlo en la Web de ASPAlliance.