我有两个班级:
[KnownType(typeof(QueueInfo))]
public class InfoObject:IExtensibleDataObject
{
/// <summary>
///
/// </summary>
[DataMember]
public int Id { get; set; }
/// <summary>
///
/// </summary>
[DataMember]
public string Name { get; set; }
/// <summary>
///
/// </summary>
[DataMember]
public int ParentId { get; set; }
/// <summary>
///
/// </summary>
public ExtensionDataObject ExtensionData { get; set; }
}
public class QueueInfo: InfoObject
{
/// <summary>
///
/// </summary>
[DataMember]
public QueueState State { get; set; }
}
远程电话:
public InfoObject GetQueueInfo( int queueId){
return MyQueues[queueId] //<--- Value is a QueueInfo object
}
基类严格用于匿名用户,不允许查看所有信息。是否可以在不序列化QueueInfo属性的情况下返回InfoObject,还是必须创建一个新的InfoObject并返回它?
答案 0 :(得分:0)
您的问题是,当WCF服务的客户端收到任何类型的对象时,它将被反序列化为所调用的WCF方法返回的任何类型的对象。如果两种类型之间的差异在于额外的逻辑,并且对象中的数据相同,则客户端可以将返回的对象转换为另一种类型的实例;如果数据不同,则不能 - 它缺少预期类型所需的一些数据。
您需要对返回不同类型的Authenticated和非Authenticated用户进行单独调用。
答案 1 :(得分:0)
如果选中&#34;重用引用程序集中的类型&#34;,我认为您可以自定义扩展类的序列化行为并省略该信息,以便基本属性在另一侧空白。 / p>