从 WCF 服务返回服务器端类

本文关键字:服务器端 返回 服务 WCF | 更新日期: 2023-09-27 18:32:39

我认为这是一个奇怪的问题,我在服务器端定义了几个类,然后我通过服务参考引用它们,其中两个正在正常工作。我已经从服务接口指定了已知类型:

[ServiceKnownType(typeof(Obj))]
[ServiceKnownType(typeof(DigitalObject))]
[ServiceKnownType(typeof(AnalogueObject))]
[ServiceKnownType(typeof(AttributeType))]
[ServiceKnownType(typeof(AttributeData))]

然后,从 silverlight 应用程序中,我通过以下方式引用该类:

private ServiceReference.AttributeData commonData = new ServiceReference.AttributeData();

这工作正常,但是我对另一个类做完全相同的事情,唯一的区别是名为 AnalogueObjectDigitalObject 的类派生自类型 Obj 的类。你知道发生了什么吗?命名空间都是一样的,我已经重新构建了 Web 解决方案并更新了服务引用。

示例类:

using System.ComponentModel;
namespace CapCon2
{
    public class Obj : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;    
        private string _Description;  
        public string ID { get; set; }    
        public string Description
        {
            get { return _Description; }
            set
            {
                _Description = value;
                NotifyPropertyChanged("Description");
            }
        }    
        public void NotifyPropertyChanged(string name)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(name));
            }
        }
    }
}
    public class AttributeData : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    private string _Description;
    public string ID { get; set; }
    public string Description 
    {
        get { return _Description; }
        set 
        {
            _Description = value;
            NotifyPropertyChanged("Description");
        }
    }
    public string Attribute { get; set; }
    public string DataType { get; set; }
    public string Input_InputSource { get; set; }
    public string Output_OutputDest { get; set; }
    public void NotifyPropertyChanged(string name)
    {
        if (PropertyChanged!= null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }
}

从 WCF 服务返回服务器端类

如果要在服务器和客户端之间传递复杂类型,则应使用DataContract属性标记它,并使用DataMember标记其属性。这将告知 .NET 序列化对象并将其传递到 SOAP 消息中。