Для параметров OperationContract, которые представляют только дату (без компонента времени или указателя часового пояса), желательно использовать xs: Date, чтобы избежать какой-либо двусмысленности или проблем с преобразованием часового пояса между клиентом и сервером.
В настоящее время WCF поддерживает только xs: DateTime для сериализации параметров DateTime.
Каков самый простой способ создания OperationContract с параметром, который будет сериализован как xs: Date?
Я думаю о том, что пользовательский .NET-тип "public struct DateOnly" или аналогичный, с неявным литьем в/из стандартного DateTime, который каким-то образом автоматически генерирует wsdl как xs: Date.
Возможно ли это, и как я могу его реализовать?
Если возможно, я подозреваю, что решение может включать использование XmlSchemaProviderAttribute в настраиваемом типе, но любая документация, которую я нашел в этом атрибуте, кажется немного непрозрачной.
Обновление
Мне трудно поверить, что это увеличит вероятность получения решения, но я буду следовать рекомендациям сайта и начинаю щедрость.
Для большей ясности условие для награды - предоставить всю информацию, необходимую для построения решения, так что параметр для WCF OperationContract может быть:
-
сериализован как ws: Date и описан как таковой в сгенерированном WSDL.
-
является либо значением System.DateTime, либо может быть введено неявно в/из DateTime.