从WCF调用返回基类

时间:2014-02-04 18:42:15

标签: c# .net wcf

我有两个班级:

[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并返回它?

2 个答案:

答案 0 :(得分:0)

您的问题是,当WCF服务的客户端收到任何类型的对象时,它将被反序列化为所调用的WCF方法返回的任何类型的对象。如果两种类型之间的差异在于额外的逻辑,并且对象中的数据相同,则客户端可以将返回的对象转换为另一种类型的实例;如果数据不同,则不能 - 它缺少预期类型所需的一些数据。

您需要对返回不同类型的Authenticated和非Authenticated用户进行单独调用。

答案 1 :(得分:0)

如果选中&#34;重用引用程序集中的类型&#34;,我认为您可以自定义扩展类的序列化行为并省略该信息,以便基本属性在另一侧空白。 / p>