Definitivamente hay situaciones donde la solución estática es la solución adecuada, como con cualquier aplicación. Cada vez que tenga algún objeto que debería vivir en el ámbito de la aplicación, y no en el ámbito de solicitud, debe ser estático y debe usar métodos estáticos para acceder y manipularlo.
Como ejemplo, aquí hay un fragmento de código que escribí recientemente para una aplicación ASP.NET, que es esencialmente una memoria caché de serializador. Serializadores son caros para crear y podemos volver a utilizar la misma según el tipo durante el tiempo que la vida de la aplicación, así que no hay necesidad de perder tiempo en cada hilo solicitud de ellos:
(Nota: esto ha sido simplificada para demostrar los aspectos estáticos)
public class XmlSerializerUtility
{
private static Dictionary<Type, XmlSerializer> serializers = new Dictionary<Type, XmlSerializer>();
private static object sync = new object();
public static T Deserialize<T>(string input)
{
XmlSerializer xs = GetSerializer(typeof(T));
using (StringReader sr = new StringReader(input))
{
return (T)xs.Deserialize(sr);
}
}
public static XmlDocument Serialize(object input)
{
XmlDocument doc = new XmlDocument();
XmlSerializer xs = GetSerializer(input.GetType());
using (MemoryStream stream = new MemoryStream())
{
xs.Serialize(stream, input);
stream.Position = 0;
doc.Load(stream);
}
return doc;
}
private static XmlSerializer GetSerializer(Type type)
{
lock (sync)
{
XmlSerializer xs = null;
if (!serializers.ContainsKey(type))
{
xs = new XmlSerializer(type);
serializers.Add(type, xs);
}
else
{
xs = serializers[type];
}
return xs;
}
}
}
Ver http://stackoverflow.com/questions/169378/c-method-can-be-made-static-but-should-it – cdonner
bastante algunas preguntas simillar: http : //stackoverflow.com/search? q = static + methods –
@cdonner y @preet ... gracias por los enlaces ... pero estaba buscando una información completa de la comunidad sobre métodos estáticos, ya que no estaba muy claro sobre t them .. gracias de nuevo ... :) –