[DataMember]
public int? NumberOfPages; //////////// Is this supported????
[DataMember]
public bool? Color; //////////// Is this supported????
[DataMember]
public int? BulkQuantity;
[DataMember]
WCF Datacontract - Поддерживает ли он элемент данных с возможностью NULL?
Ответ 1
Да, конечно!
У вас не должно возникнуть никаких проблем с созданием элементов с возможностью сбрасывания данных, они будут обрабатываться в результате WSDL/XSD как члены "xs: nillable = true". Нет проблем.
Ответ 2
Да, см. Типы, поддерживаемые сериализатором контрактов данных:
Nullable типы полностью поддерживаются сериализатором данных.
Ответ 3
@Кахон и Батвад:
Мы решили эту проблему, используя тип nullable<>
или ?
в два этапа:
-
В классе, содержащем общее поле, определите поле следующим образом:
nullable<GenType> MyField {get; set;}
-
В контракте данных, который использует этот базовый класс, вы можете определить, какие элементы известны сериализатору/десериализатору, используя теги, похожие на аннотации. Здесь мы определили, например:
[Serializable] [DataContract] [KnownType(typeof(BaseClass<nullable<DateTime>>))]
Вместо
BaseClass<nullable<DateTime>>
вы можете использоватьBaseClass<DateTime?>
, я думаю.
После этого сериализация общих нулевых значений сработала для нас.
Ответ 4
Обычно он работает, но вы можете столкнуться с проблемами, если класс, содержащий элемент с возможностью NULL, является общим. Кто-то также столкнулся с той же проблемой, что и я: http://discoveringdotnet.alexeyev.org/2009/06/wcf-nullable-values-are-not-working-in.html