这个bug应该修复吗?

时间:2009-11-07 11:20:14

标签: .net serialization

我昨天在.Net框架中发现了一个错误,发现它是一个已知错误,无法修复。简而言之,当一个int(可能还有其他二进制类型)被分配给该字段时,包含IComparable类型字段的类不能进行二进制序列化和反序列化:

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

如果您尝试序列化(和反序列化)以下两个对象,第一个将成功,第二个将失败:

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

我在这里更详细地描述了这一点:http://ondevelopment.blogspot.com/2009/11/fix-that-bug-will-ya-no.html

您可以在此处找到错误报告(请注意,此报告来自2006年,而非我提交):http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=91177

这不会被修复,因为“修复的风险超过了它的好处”。我没有看到任何(可收费的)情况,这将是一个突破性的变化。所以我的实际问题是,有人会想到一个真正的情况,这将是一个突破性的变化吗?

2 个答案:

答案 0 :(得分:2)

我敢打赌,他们在本机类型的情况下做了一些非常人为的优化,比如int用于序列化甚至是系统的其他部分。

撤销可能存在风险,因为它可能是正确性或性能回归,或两者兼而有之。

答案 1 :(得分:1)

  

我没有看到任何(可收费的)情况,这将是一个突破性的变化

我认为不会有任何故意的突破性变化,但修复可能引起回归的错误还有其他风险。

你的例子看起来很人为,所以我认为他们认为风险超过了收益。如果这真的导致您出现问题,他们还为您提供了联系PSS的机会。