使用WCF传输子类

Mat*_*aes 0 c# wcf inheritance class

使用WCF传输子类时遇到一些问题.我想创建一个通用的"反馈"类,并从反馈中继承:Succes-class和Failure-class(失败有错误代码和描述).这应该使客户端能够执行以下操作:

If (myWCFclient.authenticate(user, password) is Succes)
{
..
}
Run Code Online (Sandbox Code Playgroud)

在我的WCF datacontracts中,我这样定义:

[DataContract]
public class Feedback : IFeedback
{ 
}

[DataContract]
public class Succes : Feedback
{
}

[DataContract]
public class Failure : Feedback
{
    [DataMember]
    public int errorCode { get; set; }
    [DataMember]
    public String description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这很有效,我的运营合同如下:

[OperationContract]
Feedback Authenticate(String email, String password);
Run Code Online (Sandbox Code Playgroud)

但是在我的"客户端"应用程序中,我收到了这些课程,我只发现"反馈"作为一个类,"Succes"和"Failure"无处可寻.

在此输入图像描述

有谁知道我做错了什么?我应该在我的DataContracts中定义那些不同的"Succes"和"Failure"类,因为它们是"反馈"的子类吗?

提前致谢.

小智 5

有几种方法可以解决这个问题.我认为以下方式最适合您:

[DataContract]    
[KnownType(typeof(Success))]
[KnownType(typeof(Failure))]
public class Feedback : IFeedback
{ 
}
Run Code Online (Sandbox Code Playgroud)

另见MSDN参考