Nunca debe acoplar sus bibliotecas a un consumidor (en este caso, aplicaciones Web, WinForm o WCF). Si su biblioteca necesita configuración, entonces DÁGALA a la biblioteca.
No codifique la biblioteca para extraer esos datos del archivo de configuración del consumidor. Proporcione constructores sobrecargados para esto (para eso están).
Si alguna vez miró el objeto ConfigurationManager.AppSettings
, es simplemente un NameValueCollection
. Así que cree un constructor en su biblioteca para aceptar un NameValueCollection
y pida a su consumidor DAR los datos a la biblioteca.
//Library
public class MyComponent
{
//Constructor
public MyComponent(NameValueCollection settings)
{
//do something with your settings now, like assign to a local collection
}
}
//Consumer
class Program
{
static void Main(string[] args)
{
MyComponent component = new MyComponent(ConfigurationManager.AppSettings);
}
}
¿Funcionará esta solución con la aplicación asp.net? La biblioteca de clases referenciada puede ser utilizada por WinForms y las aplicaciones ASP.NET –
sí, esa es la belleza de ConfigurationManager. Selecciona cualquier aplicación.config/web.config que sea apropiada para el dominio de la aplicación. Esto se introdujo en .NET 2.0. –
Acabo de ejecutar una prueba con una aplicación asp.net y una aplicación WinFomrs y funcionó para ambos entornos. Actualmente estoy ejecutando una prueba con un servicio WCF. Esta es la web que estaba teniendo problemas. –