WCF服务类中的内部类和变量
本文关键字:内部类 变量 服务 WCF | 更新日期: 2023-09-27 18:28:08
我在WCF中有一个类。在这个类中,有2个类、1个接口和几个变量。它添加为服务参考而没有错误。
[ServiceContract(Namespace = "")]
[SilverlightFaultBehavior]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class XmlService
{
private string filename;
private XmlTextReader xmlreader;
List<IWeather> returner=new List<IWeather>();
[OperationContract]
public void DoWork()
{
// Add your operation implementation here
return;
}
interface IWeather
{
string GetCondition { get; set; }
DateTime GetDate { get; set; }
}
public class Current_Weather:IWeather
{
private string condition, humidity, wind_condition;
private int temp_f, temp_c;
private DateTime day;
public string GetCondition
{
get { return condition; }
set { condition = value; }
}
public string GetHumidity
{
get { return humidity; }
set { humidity = value; }
}
public string GetWindCondition
{
get { return wind_condition; }
set { wind_condition = value; }
}
public int TEMP_F
{
get { return temp_f; }
set { temp_f = value; }
}
public int TEMP_C
{
get { return temp_c; }
set { temp_c = value; }
}
public DateTime GetDate
{
get { return day; }
set { day = value; }
}
}
public class Forecast_Weather:IWeather
{
public string condition;
public int lowT, highT;
public DateTime day;
public string GetCondition
{
get { return condition; }
set { condition = value; }
}
public int GetLowT
{
get { return lowT; }
set { lowT = value; }
}
public int HighT
{
get { return highT; }
set { highT = value; }
}
public DateTime GetDate
{
get { return day; }
set { day = value; }
}
}
}
我应该为内部类及其方法和变量向变量接口IWeather添加契约吗?
如果您希望它们序列化并在客户端上可见,则需要用contract属性标记它们。
内部类并不是一个很好的做法,相反,将所有操作放在一个标记为服务契约的接口中,然后将所有数据契约放在它们自己的类库中,这样你就可以引用这个组件frmo你的客户端。这有助于编写您自己的代理和其他良好习惯。
您的内部类不会暴露给服务的调用方,因为您的服务既不将它们用作参数,也不将其用作返回值。