gpt4 book ai didi

wcf - 自定义集合类型未在 WCF 客户端代理端问题上重用

转载 作者:行者123 更新时间:2023-12-04 20:19:37 25 4
gpt4 key购买 nike

我在类库项目中定义了以下类型。

[CollectionDataContract()]
public class OperationException:System.Collections.Generic.Dictionary<string,ExceptionData>
{
[DataMember()]
public bool ExceptionExists { get; set; }
}

[DataContract()]
public class ExceptionData {[DataMember()] public string Msg;}

在我的 WCF 服务端,我返回一个包含上述类的对象作为子成员变量,就像这样。
[DataContract()]
public class SaveClient
{
[DataMember()]
public string Id;
[DataMember()]
public OperationException ExceptionCollection;
}

我在客户端引用了 OperationException 类库。问题是当我使用添加服务引用生成代理时,会生成字典类型的 OperationException 的新定义。我确实将重用类型选项设置为 true。我喜欢使用实际的“OperationException”类型,因为我必须将此对象传递给其他方法。

提前致谢..!

伊夫蒂哈尔。

最佳答案

我遇到了同样的问题,和你一样,我应用了 CollectionDataContract 属性并告诉代理生成器重用我共享程序集中的类型。

修复并不明显,您需要在客户端的 Reference.svcmap 文件中提供一个 Hook ,以告诉生成器使用您的自定义集合类型。

在 Reference.svcmap 中编辑 CollectionMappings 元素,如下所示,然后更新服务引用:

<CollectionMappings>
<CollectionMapping TypeName="YourSharedAssemblyNamespace.OperationException" Category="List" />
</CollectionMappings>

如果您通过提供集合类型参数从命令行使用 svcutil,我认为可以实现相同的目标。
/collectionType:YourSharedAssemblyNamespace.OperationException

有关更多信息,请参阅这些帖子:

http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/09eefbbc-bf63-4aa3-a0cb-01a9dbd7f496/

http://www.codeproject.com/KB/WCF/WCFCollectionTypeSharing.aspx

我不确定为什么 WCF 代理生成器不只是使用常识来查找共享集合类型,但是你去吧,把它归结为 WCF 工具设计的另一个有趣之处。

关于wcf - 自定义集合类型未在 WCF 客户端代理端问题上重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8020309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com