.Net中的XML序列化区分大小写吗?

时间:2010-03-16 03:45:00

标签: .net xml-serialization

我没有找到任何明确说明XML序列化是否区分大小写的文档。

假设我有以下课程:

class Test
{
public int Field;
public string field;
}

当XML序列化此类时,我会遇到任何问题,因为它包含两个具有相同名称的字段,仅在大小写方面存在差异吗?

澄清:我知道有两个同名的字段只有大小写不同而且我不是在设计这样的野兽。我正在与另一个人放松对我的野兽作战。

1 个答案:

答案 0 :(得分:4)

简短的回答是序列化保留了大小写,并且该类将在C#中成功序列化(假设您创建了类public - 按原样,XmlSerializer将阻塞它。)

但如果你必须要问这个问题,那么课堂设计就会出现严重问题。拥有两个 public 属性或字段是一个可怕的,可怕的事情,只有大小写相同的名称,每个属性或字段执行或影响不同的功能。在这种情况下,字段甚至不是同一类型。

如果你下载了第三方图书馆并且它给你这样的课程,你会怎么做?你怎么知道哪个是哪个?你怎么会记录这个,或者在文档中查找?只是不要这样做 - 没有两个成员,为了所有意图和目的,具有相同的名称。唯一的例外是公共财产的私人支持字段 - 在这种情况下,两者是非常密切相关的,所以它不是一个问题(尽管有些人仍然喜欢用下划线作为前缀)。

正如John在评论中提到的那样,即使C#区分大小写,其他.NET语言也不是,所以您可以将其序列化为XML,但不能保证其他人能够将其反序列化到他们的环境中。

重新考虑您的设计,因此它没有看起来像这样的类。