【发布时间】:2011-07-20 10:44:21
【问题描述】:
我正在使用 WCF 检索对象集合。这些对象都是 ProcedureText 类型,但可能是 SuspensionText 或 ResumptionText 的子类,它们都继承自 ProcedureText。
public class ProcedureText { }
public class SuspensionText : ProcedureText { }
public class ResumptionText : ProcedureText { }
我的 OperationContract 指定一个方法返回一个 ProcedureText 对象的数组:
[OperationContract]
[WebGet(UriTemplate = "procedureTexts")]
ProcedureText[] GetProcedureTexts();
如果我将所有对象都转换为 ProcedureText 但我想保持使用子类型的区别,则此方法有效。我曾希望使用 KnownType 属性来做到这一点,并希望能够通过将其添加到我的 ProcedureText 类来做到这一点:
[System.Runtime.Serialization.KnownType(typeof(SuspensionTextDto))]
[System.Runtime.Serialization.KnownType(typeof(ResumptionTextDto))]
public class ProcedureText { }
这不起作用,因为编译器无法解析 System.Runtime.Serialization.KnownType。我从文档中知道该属性是 .NET Framework 4 的一部分,但我使用的是 .NET Framework 4,这是我项目的 Target Frameweork。
为什么要设置才能使用属性?
【问题讨论】:
标签: wcf serialization