C# 如何在WCF服务中公开WSDL对象

C# 如何在WCF服务中公开WSDL对象,c#,wcf,wsdl,datacontractserializer,C#,Wcf,Wsdl,Datacontractserializer,我有一个WCF服务,它作为第三方服务的代理 我已经向第三方WSDL端点添加了一个服务引用,现在我的Reference.cs文件中有许多我希望从WCF服务器公开的对象,这些对象可以被对我的服务的请求使用 比如, [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.2046.0")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThr

我有一个WCF服务,它作为第三方服务的代理

我已经向第三方WSDL端点添加了一个服务引用,现在我的Reference.cs文件中有许多我希望从WCF服务器公开的对象,这些对象可以被对我的服务的请求使用

比如,

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.2046.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.opentravel.org/OTA/2003/05")]
public partial class OTA_HotelAvailRQ : object, System.ComponentModel.INotifyPropertyChanged
{

   private string echoTokenField;

   private System.DateTime timeStampField;

   private bool timeStampFieldSpecified;

   private bool targetFieldSpecified;

   private decimal versionField;

   private bool availRatesOnlyField;

   private bool availRatesOnlyFieldSpecified;

   [System.Xml.Serialization.XmlAttributeAttribute()]
   public string EchoToken
   {
       get
       {
           return this.echoTokenField;
       }
       set
       {
           this.echoTokenField = value;
           this.RaisePropertyChanged("EchoToken");
       }
   }

   /// <remarks/>
   [System.Xml.Serialization.XmlAttributeAttribute()]
   public System.DateTime TimeStamp
   {
       get
       {
           return this.timeStampField;
       }
       set
       {
           this.timeStampField = value;
          this.RaisePropertyChanged("TimeStamp");
       }
   }

   /// <remarks/>
   [System.Xml.Serialization.XmlIgnoreAttribute()]
   public bool TimeStampSpecified
   {
       get
       {
           return this.timeStampFieldSpecified;
       }
       set
       {
           this.timeStampFieldSpecified = value;
           this.RaisePropertyChanged("TimeStampSpecified");
       }
   }

   /// <remarks/>
   [System.Xml.Serialization.XmlAttributeAttribute()]
   public decimal Version
   {
       get
       {
           return this.versionField;
       }
       set
       {
           this.versionField = value;
           this.RaisePropertyChanged("Version");
       }
   }

   /// <remarks/>
   [System.Xml.Serialization.XmlAttributeAttribute()]
   public bool AvailRatesOnly
   {
       get
       {
           return this.availRatesOnlyField;
       }
       set
       {
           this.availRatesOnlyField = value;
           this.RaisePropertyChanged("AvailRatesOnly");
       }
   }

   /// <remarks/>
   [System.Xml.Serialization.XmlIgnoreAttribute()]
   public bool AvailRatesOnlySpecified
   {
       get
       {
           return this.availRatesOnlyFieldSpecified;
       }
       set
       {
           this.availRatesOnlyFieldSpecified = value;
           this.RaisePropertyChanged("AvailRatesOnlySpecified");
       }
   }

   public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

   protected void RaisePropertyChanged(string propertyName)
   {
       System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
       if ((propertyChanged != null))
       {
           propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
       }
   }
}
[System.CodeDom.Compiler.GeneratedCodeAttribute(“System.Xml”,“4.7.2046.0”)]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(“代码”)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true,命名空间=”http://www.opentravel.org/OTA/2003/05")]
公共部分类OTA_HotelAvailerQ:对象,System.ComponentModel.INotifyPropertyChanged
{
私有字符串字段;
private System.DateTime时间戳字段;
指定的专用布尔值;
指定的专用布尔目标域;
私有十进制版本字段;
私人bool可用的最新字段;
仅指定了专用布尔值字段;
[System.Xml.Serialization.XmlAttributeAttribute()]
公共字符串EchoToken
{
得到
{
返回此.echotoken字段;
}
设置
{
this.echoTokenField=值;
此.RaisePropertyChanged(“EchoToken”);
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
public System.DateTime时间戳
{
得到
{
返回此.timestamp字段;
}
设置
{
this.timeStampField=值;
此.RaisePropertyChanged(“时间戳”);
}
}
/// 
[System.Xml.Serialization.XmlIgnoreAttribute()]
指定公共bool时间戳
{
得到
{
返回指定的这个.timestampfield;
}
设置
{
this.timeStampFieldSpecified=值;
此.RaisePropertyChanged(“指定时间”);
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公开十进制版本
{
得到
{
返回此.version字段;
}
设置
{
this.versionField=值;
本.RaisePropertyChanged(“版本”);
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共图书馆
{
得到
{
返回此.availRatesOnlyField;
}
设置
{
this.availRatesOnlyField=值;
本.RaiseProperty已更改(“可用”);
}
}
/// 
[System.Xml.Serialization.XmlIgnoreAttribute()]
公共布尔值仅指定
{
得到
{
返回此.availRatesOnlyFieldSpecified;
}
设置
{
this.availRatesOnlyFieldSpecified=值;
此.raiseProperty已更改(“指定可用日期”);
}
}
公共事件System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
受保护的void RaisePropertyChanged(字符串propertyName)
{
System.ComponentModel.PropertyChangedEventHandler propertyChanged=this.propertyChanged;
如果((propertyChanged!=null))
{
propertyChanged(这是新的System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
我得到的例外是

不应为数据协定名称为“”的类型“”。考虑使用DATACONTRORTCORDEVER或将未知类型的任何类型添加到已知类型的列表中——例如,使用NoNyType属性或将它们添加到传递给DATACONTROTTRORIGLASER的已知类型列表中。 我设法公开这些对象的唯一方法是用[DataContract]装饰它们,用[DataMember]装饰属性

然而,我的问题是,我的reference.cs包含很多对象,我宁愿找到一种自动化的方法来完成它


有什么建议吗?

那么您的服务是作为代理吗?是的,本质上我的服务是从第三方服务请求数据,我想公开这些对象