Tôi đã tìm thấy một lỗi trong khuôn khổ .Net ngày hôm qua và thấy rằng nó là một lỗi đã biết sẽ không được sửa. Nói tóm lại các lỗi là một lớp có chứa một lĩnh vực loại IComparable không thể nhị phân serialized và deserialized khi một int (và các loại nhị phân có thể khác) được giao nhiệm vụ đến lĩnh vực đó:Lỗi này có nên được khắc phục không?
[Serializable]
public class Foo
{
public IComparable Value;
}
Nếu bạn cố gắng serialize (và deserialize) hai đối tượng sau cái đầu tiên sẽ thành công và điều thứ hai sẽ thất bại:
var s = new Foo { Value = "foo" };
var i = new Foo { Value = 1 };
tôi mô tả này chi tiết hơn ở đây: http://ondevelopment.blogspot.com/2009/11/fix-that-bug-will-ya-no.html
và báo cáo lỗi bạn có thể tìm thấy ở đây (lưu ý rằng báo cáo này là từ năm 2006 và không được tôi nộp): http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=91177
Điều này sẽ không được khắc phục vì "nguy cơ sửa lỗi vượt quá lợi ích của nó". Tôi không thấy bất kỳ kịch bản (có thể chịu trách nhiệm) nào mà đây sẽ là một thay đổi đột phá. Vì vậy, câu hỏi thực sự của tôi là, bất cứ ai có thể nghĩ về một kịch bản thực sự, nơi đây sẽ là một thay đổi phá vỡ?
Hoạt động chính xác với Mono/gmcs 2.0.1. – Thomas
@Thomas, điều đó thật thú vị. Trên thực tế điều này có thể được nộp như một lỗi với đội Mono sau đó kể từ khi tôi biết họ cố gắng để phản ánh các lỗi trong BCL. –
Microsoft chưa bao giờ thực hiện các thay đổi lớn đối với bất kỳ hệ thống nào có khả năng phá vỡ bất kỳ phần mềm nào tồn tại dựa trên các công cụ cũ (hellooo, bloat của các hệ điều hành!). Tôi tin rằng bạn sẽ thực sự phải bằng cách nào đó thay đổi toàn bộ công ty đầu tiên để có được điều này cố định. – Esko