2009-11-07 15 views
5

Ho trovato un bug nel framework .Net ieri e ho scoperto che si tratta di un bug noto che non verrà risolto. In breve, il bug è che una classe che contiene un campo di tipo IComparable non può essere binario serializzato e deserializzato quando un int (ed eventualmente altri tipi di binari) sono assegnati a quel campo:Questo bug dovrebbe essere risolto?

[Serializable] 
public class Foo 
{ 
    public IComparable Value; 
} 

Se si tenta per serializzare (e deserializzare) i seguenti due oggetti il ​​primo avrà successo e la seconda avrà esito negativo:

var s = new Foo { Value = "foo" }; 
var i = new Foo { Value = 1 }; 

ho descritto più in dettaglio qui: http://ondevelopment.blogspot.com/2009/11/fix-that-bug-will-ya-no.html

e la segnalazione di bug si possono trovare qui (notare che questo rapporto è del 2006 e non è stato archiviato da me): http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=91177

Questo non verrà risolto perché "il rischio della correzione supera il suo vantaggio". Non riesco a vedere nessuno scenario (a pagamento) in cui questo sarebbe un cambiamento irrisolto. Quindi la mia domanda attuale è: qualcuno può pensare a uno scenario reale in cui questo sarebbe un cambiamento decisivo?

+0

Funziona correttamente con Mono/gmcs 2.0.1. – Thomas

+0

@Thomas, è interessante. In realtà questo potrebbe essere archiviato come un bug con il team di Mono, quindi da quando so che cercano di rispecchiare i bug nel BCL. –

+0

Microsoft non ha mai avuto grandi possibilità di apportare modifiche a nessuno dei propri sistemi, il che potrebbe potenzialmente interrompere qualsiasi software preesistente facendo affidamento sulle vecchie cose (ciaooo, un sacco di sistemi operativi!). Credo che in un primo momento dovresti in qualche modo cambiare l'intera azienda per risolvere il problema. – Esko

risposta

1

non riesco a vedere alcun scenari (feesible), dove questo sarebbe un cambiamento di rottura

non credo che ci sarebbe stato alcun cambiamento di rottura intenzionale, ma ci sono altri rischi coinvolti nel correggere i bug quello potrebbe introdurre la regressione.

Il tuo esempio sembra artificioso, quindi penso che abbiano concluso che i rischi superano i benefici. Ti hanno anche dato l'opportunità di contattare PSS se questo ti ha veramente causato un problema.

+0

Non ero io ad aver depositato il bug, visto che il bug report ha quattro anni. Non è un grosso problema per me, sono interessato solo ai problemi che potrebbero causare la correzione del bug. Non intendo in alcun modo che stiano sbagliando, sto solo dicendo che non posso inventare uno scenario in cui è un cambiamento irrisolto e sono curioso di vedere se qualcun altro può farlo. –

+0

"Non riesco a trovare uno scenario in cui si verifichi un cambiamento radicale": gli interni di come la serializzazione viene implementata sono complessi e non è necessario elaborare uno scenario per comprendere che la modifica di un codice complesso comporta dei rischi. – Joe

+0

Come viene conteso il mio esempio? L'esempio qui nella domanda è una semplice replica di un bug, controlla il post sul blog per una descrizione più dettagliata di un problema reale.Quello che stai dicendo è che hanno paura di risolvere questo problema perché potrebbe rompere qualcosa completamente estraneo? Senza verificare l'origine dell'implementazione della serializzazione binaria, non posso dirti se penso che sia probabile o meno. Ma a me sembra contravvenuto. –

2

La mia scommessa sarebbe che hanno fatto alcune ottimizzazioni molto forzate nel caso di tipi nativi come int per la serializzazione o anche altre parti del sistema.

Annullare ciò potrebbe essere rischioso in quanto potrebbe essere corretto o regressivo o entrambi.

Problemi correlati