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添加契约吗?

WCF服务类中的内部类和变量

如果您希望它们序列化并在客户端上可见,则需要用contract属性标记它们。

内部类并不是一个很好的做法,相反,将所有操作放在一个标记为服务契约的接口中,然后将所有数据契约放在它们自己的类库中,这样你就可以引用这个组件frmo你的客户端。这有助于编写您自己的代理和其他良好习惯。

您的内部类不会暴露给服务的调用方,因为您的服务既不将它们用作参数,也不将其用作返回值。