我正在使用WCF來檢索對象的集合。這些對象是所有類型的ProcedureText,但可以是子類SuspensionText或ResumptionText,它們都從ProcedureText繼承。爲什麼我不能在我的WCF類中使用KnownType屬性?
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,這是我的項目的目標框架。
爲什麼我需要設置爲可以使用該屬性?
非常感謝你,亞當。我不應該犯這樣一個愚蠢的錯誤 - 我認爲DLL被引用是因爲Visual Studio識別了命名空間。 – 2011-03-22 14:32:00