从 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();
这工作正常,但是我对另一个类做完全相同的事情,唯一的区别是名为 AnalogueObject
和 DigitalObject
的类派生自类型 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));
}
}
}
如果要在服务器和客户端之间传递复杂类型,则应使用DataContract
属性标记它,并使用DataMember
标记其属性。这将告知 .NET 序列化对象并将其传递到 SOAP 消息中。