【问题标题】:WCF Service Client with svcutil ( no "extra" clientside-datatype def. )带有 svcutil 的 WCF 服务客户端(没有“额外的”客户端数据类型定义。)
【发布时间】:2010-11-07 06:07:51
【问题描述】:

我遇到了问题,WCF 服务(使用 svcutil.exe 生成)生成它自己的数据类型,而不是使用我已经定义的那些..

例如:

svcutil 生成如下内容:

 public partial class EmailTransactionRequestMsg : object,   System.Runtime.Serialization.IExtensibleDataObject
{

    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;

    private int bit_to_setField;

    private string country_db_identifierField;
.

.
}

当我真正希望它使用该类时:

[DataContract(Namespace = "Ps.App.Mailing.MsgQueue.MsgInterfaces")]
public class EmailTransactionRequestMsg
{
    [DataMember]
    public string country_db_identifier;

    [DataMember]
    public int bit_to_set;

}

我看到 svcutil 服务创建了一个新的 extensionData 字段(我不知道这是出于什么目的)

那么,我如何让 svcutil 使用我自己的类(因为我不想按每个字段强制转换对象)

谢谢大家!

【问题讨论】:

    标签: wcf web-services client svcutil.exe


    【解决方案1】:

    请查看以下 svcutil 参考:

    http://msdn.microsoft.com/en-us/library/aa347733.aspx

    尤其是 /reference: 开关,它应该正是您正在寻找的。​​p>

    我看到 svcutil 服务创建 一个新的扩展数据字段(我 不知道这是为了什么目的 必填)

    这是为了帮助您进行数据合同版本控制而生成的。如果您稍后将新属性添加到 EmailTransactionRequestMsg,但有一个使用旧程序集但未定义该属性的客户端,它仍然能够使用新服务,并且 ExtensionDataObject 将包含未知(新)属性。 MSDN 应该再次为您提供更多详细信息:http://msdn.microsoft.com/en-us/library/system.runtime.serialization.extensiondataobject.aspx

    【讨论】:

    • 嗨,谢谢,这也是我的第一次尝试,但是如果我引用:/reference:,客户端中仍然会生成一个新类。即使我从 IExtensibleDataObject 派生类..
    • 请将 svcutil 调用添加到您的帖子中。如果你想重用数据合同,我也会想到将它们全部放在单独的程序集中并在 svc util 中引用那个。
    猜你喜欢
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    相关资源
    最近更新 更多