Я использую WCF для получения коллекции объектов. Все объекты относятся к типу ProtocolText, но могут относиться к дочерним классам SuspensionText или ResurationText, оба из которых наследуются отProjectText.
public class ProcedureText { }
public class SuspensionText : ProcedureText { }
public class ResumptionText : ProcedureText { }
My OperationContract указывает метод, возвращающий массив объектов процедурного текста:
[OperationContract]
[WebGet(UriTemplate = "procedureTexts")]
ProcedureText[] GetProcedureTexts();
Это работает, если я приведу все свои объекты к ProtocolText, но я хочу сохранить различие в использовании подтипов. Я надеялся использовать атрибут KnownType, чтобы сделать это, и ожидал, что смогу сделать это, добавив его в мой класс AdditionalText:
[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 для моего проекта.
Почему мне нужно установить, чтобы можно было использовать атрибут?