Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么序列化的数据契约中有虚假的URL?_C#_.net_Datacontract - Fatal编程技术网

C# 为什么序列化的数据契约中有虚假的URL?

C# 为什么序列化的数据契约中有虚假的URL?,c#,.net,datacontract,C#,.net,Datacontract,根据我的类的大小,DataContract类中几乎一半的序列化文本被虚假URL填充,这些URL表示序列化类的名称空间,如下所示: xmlns:i="http://www.w3.org/2001/XMLSchema-instance\ xmlns="http://schemas.datacontract.org/2004/07/Namespace/Of/Serialized/Class" 我得到了模式部分,我也理解用信号表示类的特定名称空间的优势,但是“http:/

根据我的类的大小,
DataContract
类中几乎一半的序列化文本被虚假URL填充,这些URL表示序列化类的名称空间,如下所示:

xmlns:i="http://www.w3.org/2001/XMLSchema-instance\
xmlns="http://schemas.datacontract.org/2004/07/Namespace/Of/Serialized/Class"
我得到了模式部分,我也理解用信号表示类的特定名称空间的优势,但是“http://schemas.datacontract.org/2004/07/“在我看来,这部分完全没用。该站点不存在,即使它存在,我也不认为它应该有关于我的命名空间的任何信息

即使您说它是关键字的形式,以区别于其他XML名称空间,他们也可以使用较短的名称空间,而不是ULR

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

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

URI本身只提供标识;URI的存在既不保证也不暗示对资源的访问


您可以使用
DataContractAttribute的
命名空间
属性覆盖生成的URI

可以使用
使用System.Runtime.Serialization删除;[DataContract(Namespace=”“)]公共类Foo{}
。关于可读性和数据库空间,我不明白。