我昨天在.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
这不会被修复,因为“修复的风险超过了它的好处”。我没有看到任何(可收费的)情况,这将是一个突破性的变化。所以我的实际问题是,有人会想到一个真正的情况,这将是一个突破性的变化吗?
答案 0 :(得分:2)
我敢打赌,他们在本机类型的情况下做了一些非常人为的优化,比如int用于序列化甚至是系统的其他部分。
撤销可能存在风险,因为它可能是正确性或性能回归,或两者兼而有之。
答案 1 :(得分:1)
我没有看到任何(可收费的)情况,这将是一个突破性的变化
我认为不会有任何故意的突破性变化,但修复可能引起回归的错误还有其他风险。
你的例子看起来很人为,所以我认为他们认为风险超过了收益。如果这真的导致您出现问题,他们还为您提供了联系PSS的机会。