什么';这是WCF为DataContract生成的名称背后的逻辑
当我使用WCF将DataContract公开为SOAP wevservice时,我得到了一些时髦的genenerated名称,例如:什么';这是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; [标志] 公共
[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都是兼容的。