Me gustaría ejecutar cierto código en una biblioteca de clases cuando se crea una instancia desde otro ensamblado. ¿Hay un punto de entrada o arranque para una biblioteca de clases? Pensé que un método estático Main haría el truco, pero estaba equivocado. Las aplicaciones para esto pueden ser la configuración y la creación de instancias de un registrador de singleton, controlador de excepción no controlada, etc.¿Existe un equivalente de Application_Start para una biblioteca de clases en C#
Respuesta
AppDomain.AssemblyLoad Event que se produce cuando se carga un ensamblaje. Probablemente se pueda usar para invocar un método de inicialización en la biblioteca de su clase.
public static void Main()
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyLoad += new AssemblyLoadEventHandler(MyAssemblyLoadEventHandler);
}
static void MyAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
{
Console.WriteLine("ASSEMBLY LOADED: " + args.LoadedAssembly.FullName);
//If this is the assembly that you want to call an initialize method..
}
A continuación se presentan dos hilos similares
¿Estás seguro de que funcionará? Supongo que se suscribirá a él en un constructor estático. Si ese es el caso, creo que el evento se activará antes de que se ejecute el constructor estático. – svick
No estoy seguro de en qué orden dispararían. Sin embargo, esto se puede usar para establecer un indicador en la aplicación o para llamar al método de inicialización en la biblioteca de la clase. – CharithJ
¿Has mirado en el PreApplicationStartMethodAttribute?
using System.Web;
[assembly: PreApplicationStartMethod(typeof(ClassLibrary.Startup), "Start")]
namespace ClassLibrary
{
public class Startup
{
public static void Start()
{
// do some awesome stuff here!
}
}
}
más detalle: http://dochoffiday.com/professional/simulate-application-start-in-class-library
esto funcionará solo dentro de la aplicación asp.net y no funcionará en el contexto del proyecto de prueba de biblioteca de clase, por ejemplo. No hay nada de eso en la documentación, pero se hizo obvio después de que probé esto y exploré Support para invocar los métodos de inicio fuera de la parte de ASP.NET de [documentación de WebActivator] (https://github.com/davidebbo/WebActivator/ blob/master/README.markdown) que usa 'PreApplicationStartMethodAttribute' internamente –
Votado abajo porque la pregunta no era sobre ASP.NET. – StefanLundmark
- 1. Biblioteca de clases portátil equivalente a MethodBase.GetCurrentMethod
- 2. Recursos globales en una biblioteca de clases
- 3. ¿Existe una biblioteca de LINQ para descansar para C#
- 4. ¿Existe una biblioteca de correo electrónico con fluidez para C#?
- 5. ¿Existe una biblioteca de consola más elegante para C#?
- 6. ¿Existe una biblioteca de contenedores concurrente para C++
- 7. ¿Cómo crear un hilo en una biblioteca de clases portátil?
- 8. ¿Existe una sintaxis de C# equivalente para la definición de estructura anónima en línea de C?
- 9. portátil biblioteca de clases equivalente de Dispatcher.Invoke o Dispatcher.RunAsync
- 10. crear una biblioteca de clases para un proyecto sharepoint
- 11. C# biblioteca de clases de localización
- 12. ¿Existe un JavaSet keySet() equivalente para C++ 's std :: map?
- 13. ¿Existe un equivalente de anulación para las funciones anidadas?
- 14. ¿Existe un ClientScriptManager.RegisterClientScriptInclude equivalente para CSS
- 15. ¿Existe un equivalente xhtml.xsd disponible para HTML5?
- 16. ¿Existe una amplia biblioteca de C para leer pares de nombre/valor de un archivo?
- 17. Hacer un contenedor Objective-C para una biblioteca en C++
- 18. ¿Existe un equivalente elegante para Mac?
- 19. ¿Existe un archivo .def equivalente en Linux para controlar nombres de funciones exportadas en una biblioteca compartida?
- 20. ¿Existe un equivalente para crear un operador implícito de C# en F #?
- 21. C# Biblioteca para una fácil reflexión dinámica
- 22. Incrustar un archivo binario dentro de una biblioteca de clases
- 23. C#/IronPython Interop con biblioteca de clases de C# compartida
- 24. ¿Existe una biblioteca de métodos de extensión para C#? o compartir su propia
- 25. ¿existe un equivalente de ruptura marcado de Java en C# o una solución
- 26. ¿Existe una biblioteca C++ o Qt disponible para medir el uso de funciones de una aplicación?
- 27. ¿Existe una biblioteca ligera de lenguaje de marcado para Android?
- 28. ¿Existe una biblioteca de formato de SQL gratuita para .NET?
- 29. ¿Existe un equivalente no global de perlbrew?
- 30. ¿Existe el equivalente de java.util.concurrent para WeakHashMap?
Usted está buscando un inicializador módulo, que no es compatible con C#. – SLaks
¿Puede proporcionar un único punto de entrada a la biblioteca de la clase, por ejemplo, una fábrica de clases estática a la que debe llamar para obtener cualquier instancia útil de la biblioteca? Entonces podría hacer su inicialización en la primera llamada a la fábrica de clases estática. – mellamokb
¿No puedes simplemente usar un constructor estático de alguna clase que sabes que se cargará desde ese ensamblado? – svick