为什么序列化的 DataContracts 中有伪造的 URL?

Why do serialized DataContracts have bogus URLs in them?

根据我的 class 的大小,DataContract classes 中几乎一半的序列化文本都充满了伪造的 URL 信号名称 spaces 序列化class是的,像这样:

xmlns:i="http://www.w3.org/2001/XMLSchema-instance\
xmlns="http://schemas.datacontract.org/2004/07/Namespace/Of/Serialized/Class"

我得到了模式部分,我也明白了用信号通知 class 的特定名称 space 的好处,但是“http://schemas.datacontract.org/2004/07/" 部分在我看来是完全没用的。该网站不存在,即使它存在,我也看不出它应该如何获得关于 my Namespace.

的任何信息

即使你说它是一种关键字形式,以区别于其他 XML 名称space,他们也可以使用更短的关键字,而不是 ULR。

它们使我的单元测试更难阅读,并且在数据库中占用了大量 space。他们可以关掉吗?能否将它们更改为非 URL,以便我的 IDE 不将它们显示为链接?可以缩短吗?

那是因为它们是 URI,而不是 URL;他们的工作是明确和可识别的; 不是他们的工作是指出任何事情。引用 RFC 3986 §1.2.2:

The URI itself only provides identification; access to the resource is neither guaranteed nor implied by the presence of a URI.

您可以使用 DataContractAttributeNamespace 属性 覆盖生成的 URI。