Bạn không bao giờ nên ghép thư viện của mình với người tiêu dùng (trong trường hợp này là ứng dụng Web, WinForm hoặc WCF). Nếu thư viện của bạn cần cài đặt cấu hình, hãy GIVE nó vào thư viện.
Không mã hóa thư viện để lấy dữ liệu đó từ tệp cấu hình của người tiêu dùng. Cung cấp các nhà xây dựng quá tải cho điều này (đó là những gì họ đang có).
Nếu bạn đã từng xem đối tượng ConfigurationManager.AppSettings
, nó chỉ đơn giản là một NameValueCollection
. Vì vậy, hãy tạo một hàm tạo trong thư viện của bạn để chấp nhận một số NameValueCollection
và để người tiêu dùng của bạn GIVE dữ liệu đó vào thư viện.
//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);
}
}
Nguồn
2009-02-18 23:44:58
Giải pháp này có hoạt động với ứng dụng asp.net không? Thư viện lớp tham chiếu có thể được sử dụng bởi các ứng dụng WinForms và ASP.NET –
yep, đó là vẻ đẹp của ConfigurationManager. Nó chọn bất kỳ app.config/web.config nào phù hợp với miền ứng dụng. Điều này đã được giới thiệu trong .NET 2.0. –
Tôi chỉ chạy một thử nghiệm với một ứng dụng asp.net và một ứng dụng WinFomrs và nó làm việc cho cả hai môi trường. Tôi hiện đang chạy thử nghiệm với dịch vụ WCF. Đây là trang web tôi đang gặp sự cố. –