Tôi hiện đang viết một giao diện để cho phép các ứng dụng gửi dữ liệu ngoại lệ đến một kho lưu trữ trung tâm cho các mục đích hỗ trợ. Tôi đang ở tình trạng khó khăn về cách chuyển dữ liệu theo ngữ cảnh bổ sung:IDictionary <string, string> hoặc NameValueCollection
public interface IExceptionNotifier
{
void Notify(Exception ex, NameValueCollection context); //this
void Notify(Exception ex, IDictionary<string, string> context); //or this
}
Tôi thường thấy mình là vị trí tương tự khi tạo tra cứu. Bỏ qua liệu khái niệm trình thông báo ngoại lệ có tốt hay không, tốt nhất là sử dụng một số IDictionary<string, string>
hoặc NameValueCollection
? Tại sao bạn lại chọn cái kia?
Bạn có thể mở rộng "kiểm soát những gì bạn thực sự sẽ nhận được từ người gọi của mình" không? Khả năng người gọi gửi các khóa trùng lặp có phải là vấn đề không? Tôi đoán tôi không hoàn toàn hiểu tại sao bạn nên tránh một từ điển nếu serialization có liên quan. –
@JeffBridgman: Điều này đã gần mười năm trước, tôi không thực sự nhớ những gì tôi có ý nghĩa;) Tôi đoán nó về việc nhận được một đối tượng của một lớp cụ thể (tức là với một số hạn chế như hỗ trợ serialization), hoặc nhận được * bất cứ điều gì * với một giao diện nhất định. Ví dụ, việc thực hiện IDictionary có thể không hỗ trợ tuần tự hóa hoặc một số phương thức, trong khi NameValueCollection là một triển khai cố định, vì vậy nó phụ thuộc vào những gì bạn muốn làm với ngữ cảnh. Lưu ý rằng có một số câu hỏi khác về điều này trên SO với các cuộc thảo luận thú vị. – OregonGhost