Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
什么';这是WCF为DataContract生成的名称背后的逻辑_Wcf_Soap - Fatal编程技术网

什么';这是WCF为DataContract生成的名称背后的逻辑

什么';这是WCF为DataContract生成的名称背后的逻辑,wcf,soap,Wcf,Soap,当我使用WCF将DataContract公开为SOAP wevservice时,我得到了一些时髦的genenerated名称,例如: [Flags] public enum EnumType1 { EnumMember1 = 1; EnumMember2 = 2; EnumMember3 = 4; } [DataMember] private Dictionary< EnumType1, Class1> Class1Dictionary; [标志] 公共

当我使用WCF将DataContract公开为SOAP wevservice时,我得到了一些时髦的genenerated名称,例如:

[Flags]
public enum EnumType1
{
    EnumMember1 = 1;
    EnumMember2 = 2;
    EnumMember3 = 4;
}

[DataMember]
private Dictionary< EnumType1, Class1>  Class1Dictionary;
[标志]
公共枚举枚举类型1
{
枚举成员1=1;
2=2;
结果:3=4;
}
[数据成员]
私有字典ClassDictionary;
在电线上有这样的soap表示:(我在解释):


枚举成员1
... 

NumType1Class1UtLv0Ze5关键值背后的逻辑是什么?我可以解释NumType1Class1部件的关键值,但UTLV0zE5从何而来?此外,如果任意字符串收费,WCF客户端是否会中断?

在我看来,它确实有点随机。我不知道这种恐惧是否是随机的,是否会发生一些会破坏合同的变化

但是,如果您正在搜索功能较少的WSDL,一个解决方法(from)是对字典进行子类化,并在序列化期间使用重写输出:

[CollectionDataContract(
    Name="MyDictionary", ItemName="Items", KeyName="Key", ValueName="Value")]
public class MyDictionary: Dictionary<EnumType1, Class1>
{        
}
[CollectionDataContract(
Name=“MyDictionary”,ItemName=“Items”,KeyName=“Key”,ValueName=“Value”)]
公共类MyDictionary:Dictionary
{        
}
应生成类似以下内容的xml:

<MyDictionary> 
    <Items> 
        <Key>EnumMember1</Key> 
        <Value> ... </Value> 
    </Items> 
</MyDictionary> 

枚举成员1
...  

在我看来,它确实有点随机。我不知道这种恐惧是否是随机的,是否会发生一些会破坏合同的变化

但是,如果您正在搜索功能较少的WSDL,一个解决方法(from)是对字典进行子类化,并在序列化期间使用重写输出:

[CollectionDataContract(
    Name="MyDictionary", ItemName="Items", KeyName="Key", ValueName="Value")]
public class MyDictionary: Dictionary<EnumType1, Class1>
{        
}
[CollectionDataContract(
Name=“MyDictionary”,ItemName=“Items”,KeyName=“Key”,ValueName=“Value”)]
公共类MyDictionary:Dictionary
{        
}
应生成类似以下内容的xml:

<MyDictionary> 
    <Items> 
        <Key>EnumMember1</Key> 
        <Value> ... </Value> 
    </Items> 
</MyDictionary> 

枚举成员1
...  

这一点很好,但它仍然没有回答如何首先生成这些内容的问题,而且WCF是否需要它们专门用于服务兼容性。@David Reis-我很想知道它们是如何生成的-它们看起来确实很随机。我真的无法想象为什么它们会因为兼容性的原因出现在那里。在我看来,WSDL类型更可能是唯一的,并且使用默认名称会导致更高的冲突可能性——因此它会附加一些base64编码字符以降低这种可能性。显然,更改它们会破坏客户和服务之间的服务合同,因此我怀疑每次更改都是随机的。也许这是一个服务名称的散列或类似的东西。事实证明,不管方法是什么,都没关系,因为DATACONTRAVS无论生成的字符串都是兼容的。好点,但它仍然不能回答这些问题是如何产生的。WCF是否需要它们专门用于服务兼容性。@David Reis-我想知道它们是如何生成的-它们看起来确实很随机。我真的无法想象为什么它们会因为兼容性的原因出现在那里。在我看来,WSDL类型更可能是唯一的,并且使用默认名称会导致更高的冲突可能性——因此它会附加一些base64编码字符以降低这种可能性。显然,更改它们会破坏客户和服务之间的服务合同,因此我怀疑每次更改都是随机的。也许这是一个服务名称的散列或类似的东西。事实证明,不管方法是什么,都没有关系,因为无论生成的字符串是什么,DATACONTRAWS都是兼容的。