Parcialmente desde un punto de vista de cosas que rompen de manera curiosa y en parte desde una protección contra posibles problemas. Imagínese lo que es lo peor que le puede pasar al llamar al siguiente (o algo similar, pero string.Empty
es un buen ejemplo):Evite cambiar el valor de String.Empty
typeof(String).GetField("Empty",
BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Static |
BindingFlags.GetField
).SetValue(null, "foo");
Esto causaría problemas cuando no hay código en alguna parte que hace x = myClass.bar ?? string.Empty
.
¿Hay alguna forma (similar a los diferentes dominios de aplicación o similares) de proteger contra (o detectar) a alguien que cambia valores como String.Empty
o quizás el SqlDateTime.MinValue
(u otros campos de solo lectura similares en .NET)?
¿Tienes un problema? http://stackoverflow.com/questions/4447939/is-it-possible-to-disable-reflection-from-a-net-assembly – harold
No puede evitar que el código de confianza haga cosas malas. Y el código que no es de confianza no puede modificar 'string.Empty'. Y el tiro en el pie es bastante explícito en este caso. – CodesInChaos
Por cierto, ¿el campo 'Int.MaxValue' no es * constant *? – harold