Znalazłem wczoraj błąd w środowisku .Net i odkryłem, że jest to znany błąd, który nie zostanie naprawiony. W skrócie błąd jest, że klasa, która zawiera pole typu IComparable nie może być binarny odcinkach i rozszeregować gdy int (i ewentualnie inne typy binarne) są przypisane do tego pola:Czy ten błąd powinien zostać naprawiony?
[Serializable]
public class Foo
{
public IComparable Value;
}
Jeśli spróbujesz do serializacji (i deserializacji) następujące dwa obiekty pierwszy uda, a drugi nie powiedzie:
var s = new Foo { Value = "foo" };
var i = new Foo { Value = 1 };
opisać to bardziej szczegółowo tutaj: http://ondevelopment.blogspot.com/2009/11/fix-that-bug-will-ya-no.html
i raport błędów można znaleźć tutaj (zauważ, że to sprawozdanie pochodzi z 2006 r. i nie został przeze mnie zgłoszony): http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=91177
Nie zostanie to naprawione, ponieważ "ryzyko zmiany przeważa nad korzyścią". Nie widzę żadnych (podatnych) scenariuszy, w których byłaby to przełomowa zmiana. Moje prawdziwe pytanie brzmi: czy ktokolwiek może pomyśleć o prawdziwym scenariuszu, w którym byłaby to przełomowa zmiana?
Działa poprawnie z Mono/gmcs 2.0.1. – Thomas
@Thomas, to interesujące. W rzeczywistości może to być zgłoszone jako błąd w zespole Mono, ponieważ o ile wiem, starają się odzwierciedlić błędy w BCL. –
Microsoft nigdy nie robił wielkich zmian w żadnym z ich systemów, które mogłyby potencjalnie złamać istniejące wcześniej oprogramowanie, bazując na starych rzeczach (hellooo, nadęty system operacyjny!). Sądzę, że musiałbyś jakoś najpierw zmienić całą firmę, aby to naprawić. – Esko